include "defs.pd"
//orders
{_orders;
fw = ot_setmod, dummy, mod_fire, modfire_fireatwill;
ta = ot_setmod, dummy, mod_trace, modtrace_awlays;
br = ot_setmod, dummy, mod_trace, modtrace_byroad;
goto_0 = ot_goto, active, 0;
defeat = ot_addtrigger, defeat, trigger_dead, ts_passive, ts_defeat, i_t72:t72;
line = ot_setmod, dummy, mod_formation, modfor_line;
column = ot_setmod, dummy, mod_formation, modfor_column;
defence = ot_defence, dummy, 200.0, 10;
pt_alpha = ot_movemod, dummy, -767.54, 0.0, 298.13, 100.0, speed1;
tr_retreat1 = ot_addtrigger, tr_retreat1, trigger_sideinplace, ts_passive, ts_active, -787.52, 0.0, 390.89, 450.0, side_enemy;
wait_retreat1 = ot_wait, tr_retreat1;
pick_beta = ot_pickup, dummy, i_aicommander:aicom_b_beta, i_aicommander:aicom_b_beta;
drop_beta = ot_drop, dummy, i_aicommander:aicom_b_beta;
pt_beta = ot_movemod, dummy, -744.85, 0.0, -68.43, 20.0, speed1;
pt_delta = ot_movemod, dummy, -524.14, 0.0, -229.22, 200.0, speed1;
pick_delta = ot_pickup, dummy, i_aicommander:aicom_d_delta, i_aicommander:aicom_d_delta;
drop_delta = ot_drop, dummy, i_aicommander:aicom_d_delta;
pt_zeta = ot_movemod, dummy, 272.44, 0.0, 363.44, 10.0, speed3;
pt_theta = ot_movemod, dummy, 359.69, 0.0, 55.12, 150.0, speed2;
tr_defeat = ot_addtrigger, tr_defeat, trigger_major, ts_passive, ts_defeat, side_enemy, side_allied, -902.85, 0.0, -865.65, 500.0, 1.2;
pt_oil1 = ot_movemod, dummy, -966.45, 0.0, -521.61, 100.0, speed3;
tr_attack = ot_addtrigger, tr_attack, trigger_sideinplace, ts_passive, ts_active, 403.77, 0.0, -589.23, 1000.0, side_enemy;
wait_attack = ot_wait, tr_attack;
pick_gamma = ot_pickup, dummy, i_aicommander:aicom_c_gamma, i_aicommander:aicom_c_gamma;
drop_gamma = ot_drop, dummy, i_aicommander:aicom_c_gamma;
mo0 = ot_addmo, tr_enemy_retreat, Repel three enemy attacks, 0xffff0000;
art_fire = ot_specweapon, active, spweap_mortar_fire, -803.06, 0.0, -715.60, 200.0, dummy, 300, 100, dummy;
art_fire2 = ot_specweapon, active, spweap_howitizer_fire, -728.88, 0.0, 195.69, 200.0, dummy, 300, 30, dummy;
pt_bridge = ot_movemod, dummy, -776.94, 0.0, 240.33, 50.0, speed1;
nf = ot_setmod, dummy, mod_fire, modfire_nofire;
tr_enemy_retreat = ot_addtrigger, tr_enemy_retreat, trigger_retreat, ts_passive, ts_win, 0.3, side_enemy, 1690.39, 0.0, -467.61, 500.0;
tr_allied_retreat = ot_addtrigger, tr_allied_retreat, trigger_retreat, ts_passive, ts_active, 0.1, side_allied, -992.50, 0.0, -1808.04, 500.0;
start_dig = ot_dig, dummy, i_btm:btm_dd_0, work_dig;
stop_dig = ot_dig, dummy, i_btm:btm_dd_0, work_stop;
pt_dig1 = ot_movemod, dummy, -579.21, 0.0, -231.79, 10.0, 2;
pt_dig2 = ot_movemod, dummy, -542.42, 0.0, -275.46, 10.0, 2;
pt_dig3 = ot_movemod, dummy, -482.16, 0.0, -243.92, 10.0, 2;
pt_dig4 = ot_movemod, dummy, -455.74, 0.0, -293.80, 10.0, 2;
sd = ot_search_destroy, dummy, -628.00, 0.0, -845.92, 150.0, speed1;
tr_score1 = ot_addtrigger, tr_score1, trigger_score_group, ts_passive, ts_active, i_aicommander:aicom_dd_dig, -1, 2;
tr_final_defeat = ot_addtrigger, tr_final_defeat, trigger_final_pt, ts_passive, ts_defeat, -856.22, 0.0, -860.88, 200.0;
pt_low_move = ot_movemod, dummy, -430.29, 0.0, -923.66, 200.0, speed3;
level15_01.wav = ot_sound, active, level15_01.wav;
bypass = ot_setmod, dummy, mod_trace, modtrace_bypass;
maneur = ot_setmod, dummy, mod_move, modmove_maneur;
hide = ot_setmod, dummy, mod_move, modmove_hide;
tra = ot_setmod, dummy, mod_trace, modtrace_always;
forn = ot_setmod, dummy, mod_formation, modfor_none;
pt_x = ot_movemod, dummy, 824.49, 0.0, -1184.00, 100.0, speed3;
tr_var = ot_addtrigger, tr_var, trigger_random, ts_passive, ts_active, 0.4;
tr_var1 = ot_addtrigger, tr_var1, trigger_random, ts_passive, ts_active, 0.7;
goto_label0 = ot_goto, tr_var, label0;
goto_label1 = ot_goto, tr_var1, label1;
label0 = ot_label, dummy, label0;
label1 = ot_label, dummy, label1;
pt_var1 = ot_movemod, dummy, -449.45, 0.0, 558.22, 200.0, speed2;
}
//AI scripts
{i_aicommander:aicom_b_beta;
fw;
defence;
wait_retreat1;
pick_beta;
pt_bridge;
br;
pt_beta;
pt_delta;
drop_beta;
fw;
defence;
}
{i_aicommander:aicom_c_gamma;
fw;
line;
pt_alpha;
defence;
wait_attack;
pick_gamma;
forn;
pt_bridge;
br;
pt_beta;
drop_gamma;
bypass;
line;
pt_oil1;
sd;
}
{i_aicommander:aicom_d_delta;
fw;
pick_delta;
goto_label1;
br;
wait_retreat1;
pt_zeta;
pt_theta;
drop_delta;
bypass;
line;
pt_delta;
pt_oil1;
sd;
label1;
tra;
hide;
pt_var1;
bypass;
br;
pt_delta;
drop_delta;
line;
bypass;
pt_oil1;
sd;
}
{i_aicommander:aicom_e_epsilon;
fw;
forn;
tra;
hide;
goto_label0;
pt_x;
pt_low_move;
bypass;
pt_oil1;
sd;
label0;
pt_theta;
bypass;
line;
pt_delta;
pt_oil1;
sd;
}
{i_aicommander:script;
tr_enemy_retreat;
tr_allied_retreat;
tr_retreat1;
tr_attack;
tr_defeat;
tr_score1;
tr_final_defeat;
tr_var;
tr_var1;
mo0;
wait_retreat1;
level15_01.wav;
art_fire2;
wait_attack;
art_fire;
}
{i_aicommander:aicom_t_eta;
fw;
}
{i_aicommander:aicom_dd_dig;
start_dig;
pt_dig1;
pt_dig2;
pt_dig3;
pt_dig4;
stop_dig;
pt_oil1;
}
{i_aicommander:aicom_z_zeta;
fw;
}
//variables
{_vars;
#inc vars.pd
}
Prosze oto PROGRAM działania AI w jednej z misji w T-72 balkans in fire.
AI posiada tam własny jezyk programowania zawierający około 30 akcji triggerowych i 100 modyfikatorów.
W t-72 nie jest problemem zrobienie choinki która szczeka na czołgi nieprzyjaciela a własnym żołnierzom spiewa ballady Cohena. Dlatego też w mojej opinii T-72 to nowa jakość w dziedzinie symulatorów na PC. Nowa , gdyż blizej mu do prawdziwego symulatora niż gry.