| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733 |
- /*
- ** Command & Conquer Renegade(tm)
- ** Copyright 2025 Electronic Arts Inc.
- **
- ** This program is free software: you can redistribute it and/or modify
- ** it under the terms of the GNU General Public License as published by
- ** the Free Software Foundation, either version 3 of the License, or
- ** (at your option) any later version.
- **
- ** This program is distributed in the hope that it will be useful,
- ** but WITHOUT ANY WARRANTY; without even the implied warranty of
- ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ** GNU General Public License for more details.
- **
- ** You should have received a copy of the GNU General Public License
- ** along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
- /******************************************************************************
- *
- * FILE
- * Mission07.cpp
- *
- * DESCRIPTION
- * Mission 7 specific scripts
- *
- * PROGRAMMER
- * Ryan Vervack
- *
- * VERSION INFO
- * $Author: Dan_e $
- * $Revision: 122 $
- * $Modtime: 1/08/02 12:14p $
- * $Archive: /Commando/Code/Scripts/Mission07.cpp $
- *
- ******************************************************************************/
- #include "scripts.h"
- #include "toolkit.h"
- #include "mission7.h"
- // M07B
- // Objective Controller
- DECLARE_SCRIPT(M07_Objective_Controller, "") // 100657
- {
- bool accomplished_705;
- bool accomplished_701;
-
- enum {HAVOCS_SCRIPT, M07_DEAD_HAVOC, INITIAL_CONV, PROTECT_TEAM};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( accomplished_705, 1 );
- SAVE_VARIABLE( accomplished_701, 2 );
- }
- void Created(GameObject * obj)
- {
- // Background Music
- Commands->Set_Background_Music ("07-Got A Present For Ya.mp3");
- Commands->Start_Timer (obj, this, 0.5f, HAVOCS_SCRIPT);
- Commands->Start_Timer (obj, this, 1.0f, INITIAL_CONV);
- Add_An_Objective(709);
- accomplished_705 = false;
- accomplished_701 = false;
- }
- void Add_An_Objective(int id)
- {
- GameObject *object;
-
- switch (id)
- {
- // Evacuate Sydney
- case 701:
- {
- Commands->Add_Objective(701, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M07_01, NULL, IDS_Enc_Obj_Primary_M07_01);
- object = Commands->Find_Object(100664);
- if(object)
- {
- Commands->Set_HUD_Help_Text ( IDS_M11DSGN_DSGN1007I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Set_Objective_Radar_Blip_Object(701, object);
- Commands->Set_Objective_HUD_Info_Position(701, 90.0f, "POG_M07_1_04.tga", IDS_POG_EVACUATE, Commands->Get_Position (object));
- }
- }
- break;
- // Secure SAM Sites
- case 702:
- {
- Commands->Add_Objective(702, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M07_03, NULL, IDS_Enc_Obj_Primary_M07_03);
- object = Commands->Find_Object(100673);
- if(object)
- {
- Commands->Set_HUD_Help_Text ( IDS_M07DSGN_DSGN0089I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Set_Objective_Radar_Blip_Object(702, object);
- Commands->Set_Objective_HUD_Info_Position(702, 90.0f, "POG_M07_1_01.tga", IDS_POG_SECURE, Commands->Get_Position (object));
- }
- }
- break;
- // Destroy SSM Launchers
- case 703:
- {
- Commands->Add_Objective(703, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M07_04, NULL, IDS_Enc_Obj_Primary_M07_04);
- object = Commands->Find_Object(100798);
- if(object)
- {
- Commands->Set_Objective_Radar_Blip_Object(703, object);
- Commands->Set_Objective_HUD_Info_Position(703, 90.0f, "POG_M07_1_02.tga", IDS_POG_DESTROY, Commands->Get_Position (object));
- }
- }
- break;
- // Destroy Radar Installations
- case 704:
- {
- Commands->Add_Objective(704, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M07_01, NULL, IDS_Enc_Obj_Secondary_M07_01);
- object = Commands->Find_Object(100721);
- if(object)
- {
- Commands->Set_Objective_Radar_Blip_Object(704, object);
- Commands->Set_Objective_HUD_Info_Position(704, 90.0f, "POG_M07_2_07.tga", IDS_POG_DESTROY, Commands->Get_Position (object));
- }
- }
- break;
- // Rescue Resistance
- case 705:
- {
- Commands->Add_Objective(705, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M07_02, NULL, IDS_Enc_Obj_Secondary_M07_02);
- object = Commands->Find_Object(115842);
- if(object)
- {
- Commands->Set_Objective_Radar_Blip_Object(705, object);
- Commands->Set_Objective_HUD_Info_Position(705, 90.0f, "POG_M07_2_04.tga", IDS_POG_RESCUE, Commands->Get_Position (object));
- }
- }
- break;
- // Destroy Napalm Stockpile
- case 706:
- {
- Commands->Add_Objective(706, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M07_03, NULL, IDS_Enc_Obj_Secondary_M07_03);
- object = Commands->Find_Object(100781);
- if(object)
- {
- Commands->Set_Objective_Radar_Blip_Object(706, object);
- Commands->Set_Objective_HUD_Info_Position(706, 90.0f, "POG_M07_2_06.tga", IDS_POG_DESTROY, Commands->Get_Position (object));
- }
- }
- break;
- // Destroy Stealth Tank
- case 707:
- {
- Commands->Add_Objective(707, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M07_04, NULL, IDS_Enc_Obj_Secondary_M07_04);
- object = Commands->Find_Object(100801);
- if(object)
- {
- Commands->Set_Objective_Radar_Blip_Object(707, object);
- Commands->Set_Objective_HUD_Info_Position(707, 90.0f, "POG_M07_2_03.tga", IDS_POG_DESTROY, Commands->Get_Position (object));
- }
- }
- break;
- // Defeat Obelisk
- case 708:
- {
- Commands->Add_Objective(708, OBJECTIVE_TYPE_SECONDARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Secondary_M07_05, NULL, IDS_Enc_Obj_Secondary_M07_05);
- object = Commands->Find_Object(168926);
- if(object)
- {
- Commands->Set_Objective_Radar_Blip_Object(708, object);
- Commands->Set_Objective_HUD_Info_Position(708, 90.0f, "POG_M07_2_05.tga", IDS_POG_DEFEAT, Commands->Get_Position (object));
- }
- }
- break;
- // Protect Team Members
- case 709:
- {
- Commands->Add_Objective(709, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M07_05, NULL, IDS_Enc_Obj_Primary_M07_05);
- object = Commands->Find_Object(100717);
- if(object)
- {
- Commands->Set_HUD_Help_Text ( IDS_M07DSGN_DSGN0091I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Set_Objective_Radar_Blip_Object(709, object);
- Commands->Set_Objective_HUD_Info_Position(709, 90.0f, "POG_M07_1_05.tga", IDS_POG_PROTECT, Commands->Get_Position (object));
- }
- }
- break;
- // Escape Nuclear Strike
- case 710:
- {
- Commands->Add_Objective(710, OBJECTIVE_TYPE_PRIMARY, OBJECTIVE_STATUS_PENDING, IDS_Enc_ObjTitle_Primary_M07_02, NULL, IDS_Enc_Obj_Primary_M07_02);
- object = Commands->Find_Object(100717);
- if(object)
- {
- Commands->Set_Objective_Radar_Blip_Object(710, object);
- Commands->Set_Objective_HUD_Info_Position(710, 90.0f, "POG_M07_1_03.tga", IDS_POG_ESCAPE, Commands->Get_Position (object));
- }
- }
- break;
- }
- }
- void Remove_Pog(int id)
- {
- switch (id)
- {
- // Evacuate Dr. Sydney Mobius
- case 701:
- {
- Commands->Set_Objective_HUD_Info (701, -1, "POG_M07_1_04.tga", IDS_POG_PROTECT);
- }
- break;
- }
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- switch (param)
- {
- case 1:
- {
- if(type == 705 && accomplished_705)
- {
- return;
- }
- if(type == 705)
- {
- accomplished_705 = true;
- }
- if(type == 701)
- {
- accomplished_701 = true;
- }
- Commands->Clear_Radar_Marker (type);
- Commands->Set_Objective_Status(type, OBJECTIVE_STATUS_ACCOMPLISHED);
- Remove_Pog(type);
- if(type == 703)
- {
- Commands->Mission_Complete ( true );
- }
-
- }
- break;
- case 2:
- {
- if(type == 702 && accomplished_701)
- {
- return;
- }
- Commands->Clear_Radar_Marker (type);
- Commands->Set_Objective_Status(type, OBJECTIVE_STATUS_FAILED);
- Remove_Pog(type);
- if(type == 701)
- {
- Commands->Mission_Complete ( false );
- }
- if(type == 702)
- {
- Commands->Mission_Complete ( false );
- }
- if(type == 709)
- {
- Commands->Mission_Complete ( false );
- }
- if(type == 710)
- {
- Commands->Mission_Complete ( false );
- }
- }
- break;
- case 3:
- Add_An_Objective(type);
- break;
- case 4:
- Commands->Set_Objective_Status(type, OBJECTIVE_STATUS_PENDING);
- break;
- case 5:
- Commands->Set_Objective_Status(type, OBJECTIVE_STATUS_HIDDEN);
- break;
- }
- }
-
- void Timer_Expired(GameObject * obj, int timer_id )
- {
- if(timer_id == INITIAL_CONV)
- {
- // How are Dr. Mobius and Sydney?\n
- const char *conv_name = ("M07_CON001");
- int conv_id = Commands->Create_Conversation (conv_name, INNATE_PRIORITY_ENEMY_SEEN - 5, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(GUNNER, conv_id, true, true);
- Commands->Start_Conversation (conv_id, 300701);
- Commands->Monitor_Conversation (obj, conv_id);
- }
- if(timer_id == PROTECT_TEAM)
- {
- Add_An_Objective(710);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- ActionParamsStruct params;
- if(action_id == 300701 && reason == ACTION_COMPLETE_CONVERSATION_ENDED)
- {
- Add_An_Objective(701);
- Commands->Start_Timer (obj, this, 2.0f, PROTECT_TEAM);
-
- // Start nuclear strike countdown
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100663), M07_GO_EVAC_SITE, 1, 0.0f);
- // Customs to move team to evac site
- // Gunner
- Commands->Send_Custom_Event(obj, GUNNER, M07_GO_ASSEMBLY, 1, 0.0f);
- // Deadeye
- Commands->Send_Custom_Event(obj, DEADEYE, M07_GO_ASSEMBLY, 1, 0.0f);
- // Sydney
- Commands->Send_Custom_Event(obj, SYDNEY, M07_GO_ASSEMBLY, 1, 0.0f);
- // Hotwire
- Commands->Send_Custom_Event(obj, HOTWIRE, M07_GO_ASSEMBLY, 1, 2.0f);
- // Patch
- Commands->Send_Custom_Event(obj, PATCH, M07_GO_ASSEMBLY, 1, 2.0f);
- }
- }
- };
- //Grants initial weapons
- DECLARE_SCRIPT(M07_Havoc_DLS, "")
- {
- bool nuke_blast;
- enum {HAVOC_ALARM_SOUND};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( nuke_blast, 1 );
- }
- void Created(GameObject * obj)
- {
- nuke_blast = true;
- Commands->Give_PowerUp(obj, "POW_Chaingun_Player");
- Commands->Give_PowerUp(obj, "POW_SniperRifle_Player");
- Commands->Give_PowerUp(obj, "POW_RocketLauncher_Player");
- Commands->Give_PowerUp(obj, "POW_MineRemote_Player");
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == M07_NUKE_BLAST )
- {
- nuke_blast = (param == 1) ? true : false;
- }
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_NUKE_IMPACT)
- {
- if(nuke_blast)
- {
- Commands->Apply_Damage( obj, 10000.0f, "DEATH");
- }
- }
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- if(enemy == Commands->Find_Object(100801))
- {
- // You've got to be kidding.\n
- const char *conv_name = ("M07_CON015");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300707);
- Commands->Monitor_Conversation (obj, conv_id);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300702 && reason == ACTION_COMPLETE_CONVERSATION_ENDED)
- {
- // Defeat Stealth Tank.
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 707, 3, 0.0f);
- // Change soundtrack to attack
- Commands->Set_Background_Music ("Raveshaw_Act on Instinct");
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- Commands->Mission_Complete(false);
- }
- };
- DECLARE_SCRIPT(M07_Dead6_Minigunner, "") // Deadeye
- {
- bool nuke_blast;
- float health;
- float shield;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( nuke_blast, 1 );
- SAVE_VARIABLE( health, 2 );
- SAVE_VARIABLE( shield, 3 );
- }
- void Created(GameObject * obj)
- {
- nuke_blast = true;
- Commands->Set_Innate_Is_Stationary(obj, true);
- health = Commands->Get_Max_Health(obj);
- shield = Commands->Get_Max_Shield_Strength(obj);
- Commands->Enable_Hibernation(obj, false);
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- ActionParamsStruct params;
- if ( type == M07_GO_ASSEMBLY )
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, M07_GO_ASSEMBLY );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 102495;
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_GO_EVAC_SITE )
- {
- Commands->Apply_Damage( obj, -10000.0f, "DEATH");
- Commands->Set_Innate_Is_Stationary(obj, false);
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_NUKE_BLAST )
- {
- nuke_blast = (param == 1) ? true : false;
- }
- if ( type == M07_CAPTURE_SAM )
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN + 5), M07_CAPTURE_SAM);
- params.Set_Movement (Commands->Find_Object(100682), RUN, 3.0f);
- Commands->Action_Goto (obj, params);
- Commands->Enable_Hibernation(obj, true);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == M07_GO_EVAC_SITE)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(obj));
- }
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_LOW_PRIORITY)
- {
- Commands->Start_Timer(obj, this, 6.0f, M07_GO_EVAC_SITE);
- }
- if (action_id == M07_CAPTURE_SAM && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_NUKE_IMPACT)
- {
- if(nuke_blast)
- {
- Commands->Apply_Damage( obj, 10000.0f, "STEEL");
- }
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(damager == obj || damager == GUNNER || damager == PATCH || damager == HOTWIRE)
- {
- Commands->Set_Health(obj, health);
- Commands->Set_Shield_Strength(obj, shield);
- }
- else
- {
- health = Commands->Get_Health(obj);
- shield = Commands->Get_Shield_Strength(obj);
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Deadeye Killed
- Commands->Set_HUD_Help_Text ( IDS_M05DSGN_DSGN0178I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Dead6_Rocket_Soldier, "") // Gunner
- {
- bool nuke_blast;
- float health;
- float shield;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( nuke_blast, 1 );
- SAVE_VARIABLE( health, 2 );
- SAVE_VARIABLE( shield, 3 );
- }
- void Created(GameObject * obj)
- {
- nuke_blast = true;
- Commands->Set_Innate_Is_Stationary(obj, true);
- health = Commands->Get_Max_Health(obj);
- shield = Commands->Get_Max_Shield_Strength(obj);
- Commands->Enable_Hibernation(obj, false);
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- ActionParamsStruct params;
- if ( type == M07_GO_ASSEMBLY )
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, M07_GO_ASSEMBLY );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 102479;
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_GO_EVAC_SITE )
- {
- Commands->Set_Innate_Is_Stationary(obj, false);
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_NUKE_BLAST )
- {
- nuke_blast = (param == 1) ? true : false;
- }
- if ( type == M07_CAPTURE_SAM )
- {
- Commands->Apply_Damage( obj, -10000.0f, "DEATH");
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN + 5), M07_CAPTURE_SAM);
- params.Set_Movement (Commands->Find_Object(100681), RUN, 3.0f);
- Commands->Action_Goto (obj, params);
- Commands->Enable_Hibernation(obj, true);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == M07_GO_EVAC_SITE)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(obj));
- }
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_LOW_PRIORITY)
- {
- Commands->Start_Timer(obj, this, 6.0f, M07_GO_EVAC_SITE);
- }
- if (action_id == M07_CAPTURE_SAM && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_NUKE_IMPACT)
- {
- if(nuke_blast)
- {
- Commands->Apply_Damage( obj, 10000.0f, "STEEL");
- }
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(damager == obj || damager == DEADEYE || damager == PATCH || damager == HOTWIRE)
- {
- Commands->Set_Health(obj, health);
- Commands->Set_Shield_Strength(obj, shield);
- }
- else
- {
- health = Commands->Get_Health(obj);
- shield = Commands->Get_Shield_Strength(obj);
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Gunner Killed
- Commands->Set_HUD_Help_Text ( IDS_M05DSGN_DSGN0176I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Dead6_Grenadier, "") // Patch
- {
- bool nuke_blast;
- float health;
- float shield;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( nuke_blast, 1 );
- SAVE_VARIABLE( health, 2 );
- SAVE_VARIABLE( shield, 3 );
- }
- void Created(GameObject * obj)
- {
- nuke_blast = true;
- Commands->Set_Innate_Is_Stationary(obj, true);
- health = Commands->Get_Max_Health(obj);
- shield = Commands->Get_Max_Shield_Strength(obj);
- Commands->Enable_Hibernation(obj, false);
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- ActionParamsStruct params;
- if ( type == M07_GO_ASSEMBLY )
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, M07_GO_ASSEMBLY );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 102495;
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_GO_EVAC_SITE )
- {
- Commands->Apply_Damage( obj, -10000.0f, "DEATH");
- Commands->Set_Innate_Is_Stationary(obj, false);
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_NUKE_BLAST )
- {
- nuke_blast = (param == 1) ? true : false;
- }
- if ( type == M07_CAPTURE_SAM )
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_CAPTURE_SAM);
- params.Set_Movement (SYDNEY, RUN, 3.0f);
- params.MoveFollow = true;
- Commands->Action_Goto (obj, params);
- Commands->Enable_Hibernation(obj, true);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == M07_GO_EVAC_SITE)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- if(timer_id == M07_CAPTURE_SAM)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_CAPTURE_SAM);
- params.Set_Movement (SYDNEY, RUN, 3.0f);
- params.MoveFollow = true;
- Commands->Action_Goto (obj, params);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(obj));
- }
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_LOW_PRIORITY)
- {
- Commands->Start_Timer(obj, this, 6.0f, M07_GO_EVAC_SITE);
- }
- if (action_id == M07_CAPTURE_SAM && reason == ACTION_COMPLETE_LOW_PRIORITY)
- {
- Commands->Start_Timer(obj, this, 6.0f, M07_CAPTURE_SAM);
- }
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_NUKE_IMPACT)
- {
- if(nuke_blast)
- {
- Commands->Apply_Damage( obj, 10000.0f, "STEEL");
- }
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(damager == obj || damager == DEADEYE || damager == GUNNER || damager == HOTWIRE)
- {
- Commands->Set_Health(obj, health);
- Commands->Set_Shield_Strength(obj, shield);
- }
- else
- {
- health = Commands->Get_Health(obj);
- shield = Commands->Get_Shield_Strength(obj);
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Patch Killed
- Commands->Set_HUD_Help_Text ( IDS_M07DSGN_DSGN0092I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Dead6_Grenadier2, "") // Patch2
- {
- enum{WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( nuke_blast, 1 );
- }
- void Created(GameObject * obj)
- {
- Commands->Enable_Hibernation(obj, false);
- ActionParamsStruct params;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 103837;
- Commands->Action_Goto( obj, params );
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == WAYPATH)
- {
- int dead6_id = Commands->Get_ID(obj);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_DEAD6_EVAC, dead6_id, 0.0f);
- }
-
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Patch Killed
- Commands->Set_HUD_Help_Text ( IDS_M07DSGN_DSGN0092I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Dead6_MiniGunner2, "") // Deadeye2
- {
- enum{WAYPATH};
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( nuke_blast, 1 );
- }
- void Created(GameObject * obj)
- {
- Commands->Enable_Hibernation(obj, false);
- ActionParamsStruct params;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 103837;
- Commands->Action_Goto( obj, params );
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == WAYPATH)
- {
- int dead6_id = Commands->Get_ID(obj);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_DEAD6_EVAC, dead6_id, 0.0f);
- }
-
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Deadeye Killed
- Commands->Set_HUD_Help_Text ( IDS_M05DSGN_DSGN0178I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Dead6_Rocket_Soldier2, "") // Gunner2
- {
- enum{WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( nuke_blast, 1 );
- }
- void Created(GameObject * obj)
- {
- Commands->Enable_Hibernation(obj, false);
- ActionParamsStruct params;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 103837;
- Commands->Action_Goto( obj, params );
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == WAYPATH)
- {
- int dead6_id = Commands->Get_ID(obj);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_DEAD6_EVAC, dead6_id, 0.0f);
- }
-
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Gunner Killed
- Commands->Set_HUD_Help_Text ( IDS_M05DSGN_DSGN0176I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Sydney2, "")
- {
- enum{WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( nuke_blast, 1 );
- }
- void Created(GameObject * obj)
- {
- Commands->Enable_Hibernation(obj, false);
- ActionParamsStruct params;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), 1.0f, 1.5f );
- params.WaypathID = 103837;
- Commands->Action_Goto( obj, params );
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == WAYPATH)
- {
- int dead6_id = Commands->Get_ID(obj);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_DEAD6_EVAC, dead6_id, 0.0f);
- }
-
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- Commands->Set_HUD_Help_Text ( IDS_M11DSGN_DSGN1008I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 701, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Dead6_Engineer, "") // Hotwire
- {
- bool nuke_blast;
- bool go_evac_site;
- bool dont_move;
- int current_move_loc;
- int move_loc[10];
- bool evac;
- float health;
- float shield;
- enum{GO_SAM1, ATTACK_SAM1, GO_SAM2, ATTACK_SAM2,
- HOTWIRE_MOVE_LOC, MOVE_LOC_LOW_PRIORITY, TANK_STILL_THERE, ARRIVE_EVAC_SPOT};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( nuke_blast, 1 );
- SAVE_VARIABLE( go_evac_site, 2 );
- SAVE_VARIABLE( dont_move, 3 );
- SAVE_VARIABLE( current_move_loc, 4 );
- SAVE_VARIABLE( evac, 5 );
- SAVE_VARIABLE( health, 6 );
- SAVE_VARIABLE( shield, 7 );
- SAVE_VARIABLE( move_loc, 8 );
- }
- void Created(GameObject * obj)
- {
- Commands->Enable_Hibernation(obj, false);
- nuke_blast = true;
- go_evac_site = false;
- Commands->Set_Innate_Is_Stationary(obj, true);
- dont_move = true;
- evac = false;
- current_move_loc = 0;
- move_loc[0] = 102469;
- move_loc[1] = 102470;
- move_loc[2] = 102471;
- move_loc[3] = 102472;
- move_loc[4] = 102473;
- move_loc[5] = 102474;
- move_loc[6] = 102475;
- move_loc[7] = 102476;
- move_loc[8] = 102477;
- move_loc[9] = 102478;
- health = Commands->Get_Max_Health(obj);
- shield = Commands->Get_Max_Shield_Strength(obj);
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- ActionParamsStruct params;
- if (type == M07_EVAC_INN) //SAM sites captured, evac DEAD6 and Sydney
- {
- evac = true;
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN + 5), ARRIVE_EVAC_SPOT);
- params.Set_Movement (Commands->Find_Object(105151), RUN, 3.0f);
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_GO_ASSEMBLY )
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, M07_GO_ASSEMBLY );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 102510;
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_GO_EVAC_SITE )
- {
- Commands->Apply_Damage( obj, -10000.0f, "DEATH");
- Commands->Set_Innate_Is_Stationary(obj, false);
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_NUKE_BLAST )
- {
- nuke_blast = (param == 1) ? true : false;
- }
- if ( type == M07_CAPTURE_SAM )
- {
- go_evac_site = true;
- // params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN + 5), M07_CAPTURE_SAM);
- // params.Set_Movement (STAR, RUN, 3.0f);
- // params.MoveFollow = true;
- // Commands->Action_Goto (obj, params);
- dont_move = false;
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), HOTWIRE_MOVE_LOC);
- params.Set_Movement (Commands->Find_Object(move_loc[current_move_loc]), RUN, 3.0f);
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_HOTWIRE_CAPTURE_SAMS && (!Commands->Find_Object(100905)))
- {
- Commands->Action_Reset(obj, INNATE_PRIORITY_ENEMY_SEEN + 5);
- if(Commands->Find_Object(100674))
- {
- Commands->Set_Innate_Is_Stationary(obj, false);
- dont_move = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, GO_SAM1 );
- params.Set_Movement (Commands->Find_Object(100674), RUN, 10.0f);
- Commands->Action_Goto( obj, params );
- GameObject * inn_loc = Commands->Find_Object(100718);
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(inn_loc));
- }
- else if(Commands->Find_Object(100673))
- {
- Commands->Set_Innate_Is_Stationary(obj, false);
- dont_move = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, GO_SAM2 );
- params.Set_Movement (Commands->Find_Object(100673), RUN, 10.0f);
- Commands->Action_Goto( obj, params );
- GameObject * inn_loc = Commands->Find_Object(100718);
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(inn_loc));
- }
- }
- if ( type == M07_HOTWIRE_CAPTURE_SAMS && (Commands->Find_Object(100905)))
- {
- Commands->Start_Timer(obj, this, 5.0f, TANK_STILL_THERE);
- }
- if(type == M07_MOVE_HOTWIRE && !dont_move)
- {
- current_move_loc = param;
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), HOTWIRE_MOVE_LOC);
- params.Set_Movement (Commands->Find_Object(move_loc[current_move_loc]), RUN, 3.0f);
- Commands->Action_Goto (obj, params);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == M07_GO_EVAC_SITE && !go_evac_site && !evac)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- if(timer_id == ATTACK_SAM1 && !evac)
- {
- // Custom to change SAMs playertype to GDI
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100674), M07_CHANGE_SAM_TEAM, 1, 0.0f);
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100679), M07_CHANGE_SAM_TEAM, 1, 0.0f);
- Commands->Action_Reset(obj, INNATE_PRIORITY_ENEMY_SEEN + 5);
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, GO_SAM2 );
- params.Set_Movement (Commands->Find_Object(100673), RUN, 10.0f);
- Commands->Action_Goto( obj, params );
-
- }
- if(timer_id == ATTACK_SAM2 && !evac)
- {
- // Custom to change SAMs playertype to GDI
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100673), M07_CHANGE_SAM_TEAM, 1, 0.0f);
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100680), M07_CHANGE_SAM_TEAM, 1, 0.0f);
- Commands->Action_Reset(obj, INNATE_PRIORITY_ENEMY_SEEN + 5);
- Commands->Select_Weapon(obj, NULL );
-
- }
- if(timer_id == MOVE_LOC_LOW_PRIORITY)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), HOTWIRE_MOVE_LOC);
- params.Set_Movement (Commands->Find_Object(move_loc[current_move_loc]), RUN, 3.0f);
- Commands->Action_Goto (obj, params);
- }
- if(timer_id == TANK_STILL_THERE)
- {
- Commands->Send_Custom_Event (obj, obj, M07_HOTWIRE_CAPTURE_SAMS, 1, 0.0f);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- ActionParamsStruct params;
- if (action_id == ARRIVE_EVAC_SPOT && reason == ACTION_COMPLETE_NORMAL && evac)
- {
- int dead6_id = Commands->Get_ID(obj);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_DEAD6_EVAC, dead6_id, 0.0f);
- }
- if (action_id == ARRIVE_EVAC_SPOT && reason == ACTION_COMPLETE_MOVE_NO_PROGRESS_MADE && evac)
- {
- // This is a hack for the moment, need to have pathfinding around dec_phys vehicles at inn
- int dead6_id = Commands->Get_ID(obj);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_DEAD6_EVAC, dead6_id, 0.0f);
- }
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_NORMAL && !evac)
- {
- go_evac_site = true;
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(obj));
- }
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_LOW_PRIORITY && !evac)
- {
- Commands->Start_Timer(obj, this, 6.0f, M07_GO_EVAC_SITE);
- }
-
- if (action_id == GO_SAM1 && reason == ACTION_COMPLETE_NORMAL && !evac)
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 100 );
- params.Set_Attack (Commands->Find_Object(100679), 250.0f, 0.0f, 0);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack( obj, params );
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_SAM1);
- }
- if (action_id == GO_SAM1 && reason == ACTION_COMPLETE_LOW_PRIORITY && !evac)
- {
- // Keep trying to GO_SAM1
- Commands->Send_Custom_Event (obj, HOTWIRE, M07_HOTWIRE_CAPTURE_SAMS, 1, 2.0f);
- }
- if (action_id == GO_SAM2 && reason == ACTION_COMPLETE_NORMAL && !evac)
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 100 );
- params.Set_Attack (Commands->Find_Object(100680), 250.0f, 0.0f, 0);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack( obj, params );
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_SAM2);
- }
- if(action_id == HOTWIRE_MOVE_LOC && reason == ACTION_COMPLETE_NORMAL && !evac)
- {
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(obj), 4.0f);
- }
- if(action_id == HOTWIRE_MOVE_LOC && reason == ACTION_COMPLETE_LOW_PRIORITY && !evac)
- {
- Commands->Start_Timer(obj, this, 4.0f, MOVE_LOC_LOW_PRIORITY);
- }
-
- }
- void Destroyed(GameObject * obj)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_DEAD6_EVAC, 1, 0.0f);
-
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_NUKE_IMPACT)
- {
- if(nuke_blast)
- {
- Commands->Apply_Damage( obj, 10000.0f, "STEEL");
- }
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(damager == obj || damager == DEADEYE || damager == GUNNER || damager == HOTWIRE)
- {
- Commands->Set_Health(obj, health);
- Commands->Set_Shield_Strength(obj, shield);
- }
- else
- {
- health = Commands->Get_Health(obj);
- shield = Commands->Get_Shield_Strength(obj);
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Hotwire Killed
- Commands->Set_HUD_Help_Text ( IDS_M05DSGN_DSGN0174I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Sydney, "")
- {
- bool nuke_blast;
- float health;
- float shield;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( nuke_blast, 1 );
- SAVE_VARIABLE( health, 2 );
- SAVE_VARIABLE( shield, 3 );
- }
- void Created(GameObject * obj)
- {
- nuke_blast = true;
- Commands->Set_Innate_Is_Stationary(obj, true);
- Commands->Enable_Hibernation(obj, false);
- health = Commands->Get_Max_Health(obj);
- shield = Commands->Get_Max_Shield_Strength(obj);
- // Give Sydney initial pistol
- Commands->Give_PowerUp(obj, "POW_Pistol_AI");
- Commands->Select_Weapon(obj, "Weapon_Pistol_Ai" );
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- ActionParamsStruct params;
- if ( type == M07_GO_ASSEMBLY )
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, M07_GO_ASSEMBLY );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 102479;
- Commands->Action_Goto (obj, params);
- }
- if(type == M07_GO_EVAC_SITE)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- if ( type == M07_NUKE_BLAST )
- {
- nuke_blast = (param == 1) ? true : false;
- }
- if ( type == M07_CAPTURE_SAM )
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN + 5), M07_CAPTURE_SAM);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 3.0f);
- Commands->Action_Goto (obj, params);
- Commands->Enable_Hibernation(obj, true);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == M07_CAPTURE_SAM && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Soldier_Home_Location(obj, Commands->Get_Position(obj));
- }
- if (action_id == M07_GO_EVAC_SITE && reason == ACTION_COMPLETE_LOW_PRIORITY)
- {
- Commands->Start_Timer(obj, this, 6.0f, M07_GO_EVAC_SITE);
- }
-
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_NUKE_IMPACT)
- {
- if(nuke_blast)
- {
- Commands->Apply_Damage( obj, 10000.0f, "STEEL");
- }
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == M07_GO_EVAC_SITE)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), M07_GO_EVAC_SITE);
- params.Set_Movement (Commands->Find_Object(100664), RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(damager == obj || damager == DEADEYE || damager == GUNNER || damager == HOTWIRE || damager == PATCH)
- {
- Commands->Set_Health(obj, health);
- Commands->Set_Shield_Strength(obj, shield);
- }
- else
- {
- health = Commands->Get_Health(obj);
- shield = Commands->Get_Shield_Strength(obj);
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Sydney Killed
- Commands->Set_HUD_Help_Text ( IDS_M11DSGN_DSGN1008I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 701, 2, 1.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Cathedral_Controller, "") // 100663
- {
- enum{TWO_MIN, ONE_MIN, THIRTY, TWENTY, TEN, FIVE, FOUR, THREE, TWO, ONE, ESCAPED, NUKEBITS};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( alarmed, 1 );
- }
- void Created(GameObject * obj)
- {
-
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- ActionParamsStruct params;
- if ( type == M07_GO_EVAC_SITE )
- {
- // Impact: 2 Minutes.\n
- const char *conv_name = ("M07_CON003");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 60.0f, TWO_MIN);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == TWO_MIN)
- {
- // Impact: 1 Minute.\n
- const char *conv_name = ("M07_CON004");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 30.0f, ONE_MIN);
- }
- if(timer_id == ONE_MIN)
- {
- // Impact: 30 seconds.\n
- const char *conv_name = ("M07_CON005");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 10.0f, THIRTY);
- }
- if(timer_id == THIRTY)
- {
- // Impact: 20 seconds.\n
- const char *conv_name = ("M07_CON006");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 10.0f, TWENTY);
- }
- if(timer_id == TWENTY)
- {
- // Impact: 10 seconds.\n
- const char *conv_name = ("M07_CON007");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 5.0f, TEN);
- }
- if(timer_id == TEN)
- {
- // Impact: 5 seconds.\n
- const char *conv_name = ("M07_CON008");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 1.0f, FIVE);
- }
- if(timer_id == FIVE)
- {
- GameObject * cinematic_controller = Commands->Create_Object ( "Invisible_Object", Vector3(-100.879f, 88.570f, 29.184f));
- Commands->Attach_Script(cinematic_controller, "Test_Cinematic", "XG_NukeStrike.txt");
- // 4 seconds.\n
- const char *conv_name = ("M07_CON009");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 1.0f, FOUR);
- }
- if(timer_id == FOUR)
- {
- // 3 seconds.\n
- const char *conv_name = ("M07_CON010");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 1.0f, THREE);
- }
- if(timer_id == THREE)
- {
- // 2 seconds.\n
- const char *conv_name = ("M07_CON011");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 1.0f, TWO);
-
- }
- if(timer_id == TWO)
- {
- // 1 seconds.\n
- const char *conv_name = ("M07_CON012");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- Commands->Start_Timer(obj, this, 1.0f, ONE);
- Commands->Set_Clouds (1.0f, 1.0f, 3.0f);
- }
- if(timer_id == ONE)
- {
- // Send customs to Nuke Blast Radius determination zones to deactivate them
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100665), M07_DEACTIVATE_NUKE_BLAST, 1, 0.0f);
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100666), M07_DEACTIVATE_NUKE_BLAST, 1, 0.0f);
- // Boom!
- Commands->Create_Logical_Sound(obj, M07_NUKE_IMPACT, Commands->Get_Position(obj), 2500.0f);
- Commands->Set_Ash(0.15f, 3.0f, false);
- Commands->Set_Wind(90.0f, 5.0f, 2.0f, 0.0f);
-
- Commands->Start_Timer(obj, this, 2.0f, NUKEBITS);
- }
- if(timer_id == NUKEBITS)
- {
- Commands->Create_Explosion("Ground Explosions Twiddler", Commands->Get_Position(Commands->Find_Object(119890)));
- Commands->Create_Explosion("Ground Explosions Twiddler", Commands->Get_Position(Commands->Find_Object(119891)));
- Commands->Create_Explosion("Ground Explosions Twiddler", Commands->Get_Position(Commands->Find_Object(119892)));
- Commands->Create_Explosion("Ground Explosions Twiddler", Commands->Get_Position(Commands->Find_Object(119893)));
- GameObject * nukebits = Commands->Create_Object("M07_Nukebits", Vector3(-128.295f, 71.892f, 26.754f));
- Commands->Set_Facing( nukebits, -10.000f );
- Commands->Start_Timer(obj, this, 3.0f, ESCAPED);
- }
- if(timer_id == ESCAPED)
- {
- if(SYDNEY)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 1, 0.0f);
- }
- }
- }
- };
- DECLARE_SCRIPT(M07_In_Nuke_Blast, "")
- {
-
- bool already_entered;
- bool star_in_blast;
- bool active;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- SAVE_VARIABLE( star_in_blast, 2 );
- SAVE_VARIABLE( active, 3 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- star_in_blast = true;
- active = true;
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == M07_NUKE_BLAST )
- {
- star_in_blast = false;
-
- }
- if ( type == M07_DEACTIVATE_NUKE_BLAST )
- {
- active = false;
-
- }
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if(!active)
- {
- return;
- }
- // Send to enterer to let script know in blast zone
- Commands->Send_Custom_Event (obj, enterer, M07_NUKE_BLAST, 1, 0.0f);
- if(!star_in_blast && enterer == STAR)
- {
- star_in_blast = true;
- // Send custom to in blast script to let it know player is out of blast
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100666), M07_NUKE_BLAST, 1, 0.0f);
- // Warning - Your are within the Nuclear Strike blast radius. Evacuate immediately.\n
- const char *conv_name = ("M07_CON013");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- }
- }
- };
- DECLARE_SCRIPT(M07_Out_Nuke_Blast, "")
- {
-
- bool already_entered;
- bool star_in_blast;
- bool active;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- SAVE_VARIABLE( star_in_blast, 2 );
- SAVE_VARIABLE( active, 3 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- star_in_blast = true;
- active = true;
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == M07_NUKE_BLAST )
- {
- star_in_blast = true;
- }
- if ( type == M07_DEACTIVATE_NUKE_BLAST )
- {
- active = false;
-
- }
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if(!active)
- {
- return;
- }
- // Send to enterer to let script know out blast zone
- Commands->Send_Custom_Event (obj, enterer, M07_NUKE_BLAST, 0, 0.0f);
- if(star_in_blast && enterer == STAR)
- {
- star_in_blast = false;
- // Minimum safe distance achieved.\n
- const char *conv_name = ("M07_CON014");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 10);
- // Send custom to in blast script to let it know player is out of blast
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100665), M07_NUKE_BLAST, 1, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Nod_Gun_Emplacement, "")
- {
- bool attacking;
-
- enum{ATTACK_OVER};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_NOD );
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = false;
-
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (damager, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Custom to evac site controller to count when four vehicles in area destroyed
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100664), M07_EVAC_SITE_VEHICLE_KILLED, 1, 0.0f);
- Commands->Debug_Message("Evac Site Vehicle Killed = %d \n", Commands->Get_ID(obj));
- }
-
- };
- DECLARE_SCRIPT(M07_Evac_Site_Controller, "") // 100664
- {
- int m07_evac_site_vehicle_killed;
- enum{WHERE_EVAC};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( m07_evac_site_vehicle_killed, 1 );
- }
- void Created (GameObject * obj)
- {
- m07_evac_site_vehicle_killed = 0;
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M07_EVAC_SITE_VEHICLE_KILLED)
- {
-
- m07_evac_site_vehicle_killed++;
- Commands->Debug_Message("Evac Site Vehicle Killed = %d \n", m07_evac_site_vehicle_killed);
- if(m07_evac_site_vehicle_killed == 4)
- {
- Commands->Debug_Message("Evac Site is clear. Play Locke, where evac conversation");
- Commands->Start_Timer (obj, this, 4.0f, WHERE_EVAC);
- }
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id )
- {
-
- if(timer_id == WHERE_EVAC)
- {
- // Locke, what's my evac status?\n
- const char *conv_name = ("M07_CON002");
- int conv_id = Commands->Create_Conversation (conv_name, INNATE_PRIORITY_ENEMY_SEEN + 5, 2000.0f, false);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(GUNNER, conv_id, false, true);
- Commands->Join_Conversation(HOTWIRE, conv_id, false, true);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300702);
- Commands->Monitor_Conversation (obj, conv_id);
- }
-
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300702 && (reason == ACTION_COMPLETE_CONVERSATION_ENDED || reason == ACTION_COMPLETE_CONVERSATION_INTERRUPTED))
- {
- // Activate Hotwire to SAM sites primary objective
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 702, 3, 0.0f);
- // Customs to position team for Primary MO 702
- // Hotwire
- Commands->Send_Custom_Event(obj, HOTWIRE, M07_CAPTURE_SAM, 1, 0.0f);
- // Patch
- Commands->Send_Custom_Event(obj, PATCH, M07_CAPTURE_SAM, 1, 0.0f);
- // Gunner
- Commands->Send_Custom_Event(obj, GUNNER, M07_CAPTURE_SAM, 1, 0.0f);
- // Deadeye
- Commands->Send_Custom_Event(obj, DEADEYE, M07_CAPTURE_SAM, 1, 0.0f);
- // Sydney
- Commands->Send_Custom_Event(obj, SYDNEY, M07_CAPTURE_SAM, 1, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Evac_Site_APC, "")
- {
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Custom to evac site controller to count when four vehicles in area destroyed
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100664), M07_EVAC_SITE_VEHICLE_KILLED, 1);
- Commands->Debug_Message("Evac Site Vehicle Killed = %d \n", Commands->Get_ID(obj));
- }
- };
- DECLARE_SCRIPT(M07_Evac_Site_APC_Soldier, "APC_ID=0:int")
- {
- int apc_id;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- apc_id = Get_Int_Parameter("APC_ID");
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, 1 );
- params.Set_Movement( STAR, RUN, 20.0f );
- Commands->Action_Goto (obj, params);
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(Commands->Find_Object(apc_id))
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Evac_Site_Soldier, "APC_ID=0:int")
- {
- int apc_id;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- apc_id = Get_Int_Parameter("APC_ID");
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(Commands->Find_Object(apc_id))
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Activate_Hotwire, "")
- {
- bool already_entered;
-
- enum{HOTWIRE_CAPTURE_SAMS};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
-
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if(enterer == HOTWIRE && !already_entered)
- {
- already_entered = true;
- Commands->Enable_Spawner(100715, true);
- // Keep those Nod forces off my back, Havoc. I'll crack these SAM's in no time.\n
- const char *conv_name = ("M07_CON016");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(HOTWIRE, conv_id, true, true);
- Commands->Start_Conversation (conv_id, HOTWIRE_CAPTURE_SAMS);
- Commands->Monitor_Conversation(obj, conv_id);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == HOTWIRE_CAPTURE_SAMS && reason == ACTION_COMPLETE_CONVERSATION_ENDED)
- {
- Commands->Send_Custom_Event (obj, HOTWIRE, M07_HOTWIRE_CAPTURE_SAMS, 1, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Fancy_Inn_Sam, "")
- {
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- ActionParamsStruct params;
- if(type == M07_CHANGE_SAM_TEAM)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_GDI );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100685), M07_SAM_CONVERTED, 1, 0.0f);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100685), M07_SAM_KILLED, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_SAM_Truck_100680, "")
- {
- float health;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( health, 1 );
- }
- void Created (GameObject * obj)
- {
- health = Commands->Get_Max_Health(obj);
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- ActionParamsStruct params;
- if(type == M07_CHANGE_SAM_TEAM)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_GDI );
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(health > (.2 * Commands->Get_Max_Health(obj)))
- {
- float damage = health - Commands->Get_Health(obj);
- damage *= 0.5f;
- health -= damage;
- Commands->Set_Health(obj, health);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Apply_Damage( Commands->Find_Object(100680), 10000.0f, "DEATH");
-
- }
- };
- DECLARE_SCRIPT(M07_SAM_Truck_100679, "")
- {
- float health;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( health, 1 );
- }
- void Created (GameObject * obj)
- {
- health = Commands->Get_Max_Health(obj);
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- ActionParamsStruct params;
- if(type == M07_CHANGE_SAM_TEAM)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_GDI );
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(health > (.2 * Commands->Get_Max_Health(obj)))
- {
- float damage = health - Commands->Get_Health(obj);
- damage *= 0.5f;
- health -= damage;
- Commands->Set_Health(obj, health);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Apply_Damage( Commands->Find_Object(100679), 10000.0f, "DEATH");
-
- }
- };
- DECLARE_SCRIPT(M07_Fancy_Inn_Controller, "")
- {
- int m07_sam_converted;
- int m07_sam_killed;
- enum{CONTROL_SAMS, DESTROY_SYDNEY, DROP_DEAD6_INN};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( m07_sam_converted, 1 );
- SAVE_VARIABLE( m07_sam_killed, 2 );
- }
- void Created (GameObject * obj)
- {
- m07_sam_converted = 0;
- m07_sam_killed = 0;
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- if(type == M07_SAM_CONVERTED)
- {
- m07_sam_converted++;
- if(m07_sam_converted == 1)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 702, 1, 0.0f);
- Commands->Enable_Spawner(100715, false);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(104496), M07_EVAC_INN, 1, 0.0f);
- Commands->Start_Timer(obj, this, 3.0f, CONTROL_SAMS);
- // Spawn DEAD6 and Sydney to evacuate
- Commands->Enable_Spawner(103833, true);
- Commands->Enable_Spawner(103834, true);
- Commands->Enable_Spawner(103835, true);
- Commands->Enable_Spawner(103836, true);
- // Destroy the initial group of people
- Commands->Destroy_Object(Commands->Find_Object(100659));
- Commands->Destroy_Object(Commands->Find_Object(100660));
- Commands->Destroy_Object(Commands->Find_Object(100661));
- Commands->Destroy_Object(Commands->Find_Object(100662));
-
- // Grant health increase medal
- Commands->Create_Object ( "POW_Medal_Health", Vector3(-45.888f, -73.569f, 4.222f));
- // Grant armor increase medal
- Commands->Create_Object ( "POW_Medal_Armor", Vector3(-43.445f, -73.384f, 4.222f));
- }
- }
- if(type == M07_SAM_KILLED)
- {
- m07_sam_killed++;
- if(m07_sam_killed == 2)
- {
- // SAMs Killed
- Commands->Set_HUD_Help_Text ( IDS_M07DSGN_DSGN0090I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- // Objective failed if both SAMs destroyed
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 702, 2, 1.0f);
- }
- }
- }
-
- };
- DECLARE_SCRIPT(M07_Inn_Apache, "")
- {
- bool attacking;
- enum{WAYPATH, INN_PATROL, ATTACK_OVER};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- attacking = false;
- Commands->Disable_Physical_Collisions(obj);
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 100707;
- params.MovePathfind = false;
- Commands->Action_Goto( obj, params );
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- ActionParamsStruct params;
- if (action_id == WAYPATH && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Enable_Enemy_Seen(obj, true);
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, INN_PATROL );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 100687;
- params.MovePathfind = false;
- Commands->Action_Attack( obj, params );
- }
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, INN_PATROL );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.WaypathID = 100687;
- params.MovePathfind = false;
- Commands->Modify_Action (obj, INN_PATROL, params);
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- }
-
- };
- DECLARE_SCRIPT(M07_Activate_Objective_704, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if (Commands->Is_A_Star(enterer) && !already_entered )
- {
- already_entered = true;
-
- // Attention GDI, this is Resistance Radio. Nod's aerial reinforcements are coordinated from mobile radar stations in the Town Square. We need those radar dishes destroyed.\n
- const char *conv_name = ("M07_CON018");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300704);
- Commands->Monitor_Conversation (obj, conv_id);
- // Engineers in Town Square
- Commands->Enable_Spawner(100726, true);
- Commands->Enable_Spawner(100727, true);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100746), M07_TOWNSQUARE_CHINOOK, 1, 0.0f);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300704 && (reason == ACTION_COMPLETE_CONVERSATION_ENDED || reason == ACTION_COMPLETE_CONVERSATION_INTERRUPTED))
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 704, 3, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Activate_Objective_705, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if (Commands->Is_A_Star(enterer) && !already_entered )
- {
- already_entered = true;
-
- // This is Resistance Radio, I have reports of captured resistance fighters west of your position. Can anyone assist?\n
- const char *conv_name = ("M07_CON019");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300705);
- Commands->Monitor_Conversation (obj, conv_id);
-
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300705 && (reason == ACTION_COMPLETE_CONVERSATION_ENDED || reason == ACTION_COMPLETE_CONVERSATION_INTERRUPTED))
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 705, 3, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Activate_Objective_706, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if (Commands->Is_A_Star(enterer) && !already_entered )
- {
- already_entered = true;
-
- // Havoc, we've spotted an SSM napalm stockpile to your west.\n
- const char *conv_name = ("M07_CON020");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300706);
- Commands->Monitor_Conversation (obj, conv_id);
-
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300706 && (reason == ACTION_COMPLETE_CONVERSATION_ENDED || reason == ACTION_COMPLETE_CONVERSATION_INTERRUPTED))
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 706, 3, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Activate_Objective_707, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if (Commands->Is_A_Star(enterer) && !already_entered )
- {
- already_entered = true;
-
- // Those must be the SSMs. Time to get to work.\n
- const char *conv_name = ("M07_CON021");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300707);
- Commands->Monitor_Conversation (obj, conv_id);
-
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300707 && (reason == ACTION_COMPLETE_CONVERSATION_ENDED || reason == ACTION_COMPLETE_CONVERSATION_INTERRUPTED))
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 707, 3, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Activate_Objective_708, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if (Commands->Is_A_Star(enterer) && !already_entered )
- {
- already_entered = true;
-
- // \\Warning - Nod Obelisk detected.\n
- const char *conv_name = ("M07_CON022");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300708);
- Commands->Monitor_Conversation (obj, conv_id);
-
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300708 && (reason == ACTION_COMPLETE_CONVERSATION_ENDED || reason == ACTION_COMPLETE_CONVERSATION_INTERRUPTED))
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 708, 3, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Activate_Objective_710, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ( Commands->Is_A_Star(enterer) )
- {
- already_entered = true;
-
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 710, 3, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_SAM_Site_Logic, "")
- {
- bool target_acquired;
- int current, ignore_ids[10];
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE(target_acquired, 1);
- SAVE_VARIABLE(ignore_ids, 2);
- SAVE_VARIABLE(current, 3);
- }
-
- void Created(GameObject * obj)
- {
- Commands->Enable_Enemy_Seen(obj, true);
- target_acquired = false;
- current = 0;
- for (int x = 0; x < 10; x++)
- {
- ignore_ids[x] = 0;
- }
- Commands->Start_Timer(obj, this, Commands->Get_Random(2, 3), 1);
- }
-
- bool Is_Ignore_Target(int id)
- {
- bool retval = false;
- for (int x = 0; x < current; x++)
- {
- if (ignore_ids[x] == id)
- {
- retval = true;
- break;
- }
- }
- return retval;
- }
-
- void Enemy_Seen(GameObject * obj, GameObject * enemy)
- {
- if (target_acquired)
- {
- return;
- }
- if (Commands->Is_A_Star(enemy) || Is_Ignore_Target(Commands->Get_ID(enemy)))
- {
- return;
- }
- Vector3 target_pos = Commands->Get_Position(enemy);
- Vector3 my_pos = Commands->Get_Position(obj);
- if (target_pos.Z - my_pos.Z >= 5.0f)
- {
- target_acquired = true;
- ActionParamsStruct params;
- params.Set_Basic(this, 90, 0);
- params.Set_Attack(enemy, 500.0f, 0.0f, true);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack(obj, params);
- Commands->Start_Timer(obj, this, 2.0f, 0);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if (timer_id == 0)
- {
- target_acquired = false;
- Commands->Action_Reset(obj, 95);
- }
- if (timer_id == 1)
- {
- Vector3 my_target = Commands->Get_Position(obj);
- my_target.X += Commands->Get_Random( -10.0f , 10.0f);
- my_target.Y += Commands->Get_Random( -10.0f , 10.0f);
- my_target.Z += Commands->Get_Random( 2.0f, 6.0f);
- ActionParamsStruct params;
- params.Set_Basic( this, 80, 20 );
- params.Set_Attack( my_target, 0, 0, true );
- params.AttackCheckBlocked = true;
- Commands->Action_Attack (obj, params);
- Commands->Start_Timer(obj, this, Commands->Get_Random(2, 3), 1);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- // Vector3 my_position = Commands->Get_Position ( obj );
- // float my_facing = Commands->Get_Facing ( obj );
- // GameObject * destroyedSam = Commands->Create_Object ( "M01_Destroyed_SAM", my_position);
- // Commands->Set_Facing ( destroyedSam, my_facing );
- // Commands->Attach_Script(destroyedSam, "M07_Destroyed_SAM_Site", "");
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M00_CUSTOM_SAM_SITE_IGNORE && current < 10)
- {
- ignore_ids[current++] = param;
- }
- }
- };
- DECLARE_SCRIPT(M07_Destroyed_SAM_Site, "")
- {
- void Created(GameObject * obj)
- {
- Commands->Start_Timer(obj, this, 1.0f, 0);
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- Commands->Create_2D_Sound("00-N170E");
- }
- };
- DECLARE_SCRIPT(M07_Mobile_Radar, "")
- {
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Animation(obj, "v_nod_radar.v_nod_radar", true);
- }
- void Damaged(GameObject * obj, GameObject * damager, float amount)
- {
- if(Commands->Get_Health(obj) < Commands->Get_Max_Health(obj))
- {
- Commands->Create_Logical_Sound(obj, M07_RADAR_DAMAGED, Commands->Get_Position(obj), 10.0f);
- }
- else
- {
- Commands->Create_Logical_Sound(obj, M07_RADAR_FIXED, Commands->Get_Position(obj), 10.0f);
- }
-
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Create_Explosion("Ground Explosions Twiddler", Commands->Get_Position(obj));
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100746), M07_RADAR_KILLED, 0, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_Radar_Engineer, "Radar_ID=0:int")
- {
-
- enum{GO_RADAR};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Enemy_Seen(obj, false);
-
- int radar_id = Get_Int_Parameter("Radar_ID");
- ActionParamsStruct params;
- params.Set_Basic(this, INNATE_PRIORITY_ENEMY_SEEN + 5, GO_RADAR);
- params.Set_Movement(Commands->Find_Object(radar_id), RUN, 1.0f);
- Commands->Action_Goto(obj, params);
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- ActionParamsStruct params;
- if (sound.Type == M07_RADAR_DAMAGED)
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 100 );
- params.Set_Attack (sound.Creator, 250.0f, 0.0f, 0);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
- }
- if (sound.Type == M07_RADAR_FIXED)
- {
- Commands->Action_Reset(obj, INNATE_PRIORITY_ENEMY_SEEN + 5);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == GO_RADAR && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- }
- };
- DECLARE_SCRIPT(M07_TownSquare_Unit, "Spawn_ID=0:int, Waypath_ID=0:int")
- {
-
- enum{WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- int waypath_id = Get_Int_Parameter("Waypath_ID");
- if(waypath_id == 0)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- else
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 0.5f );
- params.WaypathID = waypath_id;
- Commands->Action_Goto( obj, params );
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == WAYPATH && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- int spawn_id = Get_Int_Parameter("Spawn_ID");
- Commands->Enable_Spawner(spawn_id, true);
- }
- };
- DECLARE_SCRIPT(M07_TownSquare_Controller, "") //
- {
- bool chinooks_active;
- int m07_radar_killed;
- enum{CHINOOK1, CHINOOK2};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( chinooks_active, 1 );
- SAVE_VARIABLE( m07_radar_killed, 2 );
- }
- void Created (GameObject * obj)
- {
- chinooks_active = false;
- m07_radar_killed = 0;
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M07_TOWNSQUARE_CHINOOK)
- {
- if(param == 1)
- {
- chinooks_active = true;
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-316.374f, -149.140f, 5.023f));
- Commands->Set_Facing(chinook_obj1, 95.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "M07_XG_EV3_1.txt");
- Commands->Start_Timer(obj, this, 20.0f, CHINOOK1);
- Commands->Start_Timer(obj, this, 10.0f, CHINOOK2);
- }
- if(param == 0)
- {
- chinooks_active = false;
- }
- }
- if (type == M07_RADAR_KILLED)
- {
- m07_radar_killed++;
- if(m07_radar_killed == 2)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 704, 1, 0.0f);
- }
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == CHINOOK1 && chinooks_active)
- {
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-316.374f, -149.140f, 5.023f));
- Commands->Set_Facing(chinook_obj1, 95.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "M07_XG_EV3_1.txt");
- Commands->Start_Timer(obj, this, 20.0f, CHINOOK1);
- }
- if(timer_id == CHINOOK2 && chinooks_active)
- {
- GameObject * chinook_obj2 = Commands->Create_Object ( "Invisible_Object", Vector3(-343.696f, -145.495f, 5.136f));
- Commands->Set_Facing(chinook_obj2, -55.000f);
- Commands->Attach_Script(chinook_obj2, "Test_Cinematic", "M07_XG_EV3_1.txt");
- Commands->Start_Timer(obj, this, 20.0f, CHINOOK2);
- }
- }
- };
- DECLARE_SCRIPT(M07_Deactivate_TownSquare_Chinook, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if (Commands->Is_A_Star(enterer) && !already_entered )
- {
- already_entered = true;
-
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100746), M07_TOWNSQUARE_CHINOOK, 0, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_TownSquare_Gun_Emp, "")
- {
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Enable_Spawner(100748, true);
- }
- };
- DECLARE_SCRIPT(M07_Prisoner_Gate, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Animation_Frame(obj, "cht_jail.cht_jail", 0);
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(115842), M07_FREE_CIV, 1, 0.0f);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100751), M07_FREE_CIV, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_Captured_Civ_Resist, "")
- {
- bool poked;
- bool freed;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( poked, 1 );
- SAVE_VARIABLE( freed, 2 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_NEUTRAL );
- Commands->Enable_HUD_Pokable_Indicator( obj, true );
- poked = false;
- freed = false;
- }
- void Poked(GameObject * obj, GameObject * poker)
- {
- ActionParamsStruct params;
- if ((Commands->Is_A_Star(poker)) && (!poked) && (!freed))
- {
- Commands->Create_Logical_Sound(obj, M07_FREE_CIV_RESIST, Commands->Get_Position(obj), 40.0f);
- }
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_FREE_CIV_RESIST)
- {
- freed = true;
- Commands->Enable_HUD_Pokable_Indicator( obj, false );
- Commands->Set_Innate_Is_Stationary(obj, false);
- Commands->Give_PowerUp(obj, "POW_Chaingun_AI");
- Commands->Select_Weapon(obj, "Weapon_Chaingun_Ai" );
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_GDI );
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 705, 1, 0.0f);
- ActionParamsStruct params;
- params.Set_Basic(this, INNATE_PRIORITY_ENEMY_SEEN + 5, 10);
- params.Set_Movement(Commands->Find_Object(115823), RUN, 1.0f);
- Commands->Action_Goto(obj, params);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- // Spawn reinforcment civ resist
- Commands->Send_Custom_Event(obj, Commands->Find_Object(101056), M07_SPAWN_TRIANGLE_CIV, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_Activate_Present, "")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ( Commands->Is_A_Star(enterer) && !already_entered)
- {
- already_entered = true;
- // Havoc, got a present for ya.\n
- const char *conv_name = ("M07_CON023");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300700);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-446.944f, -25.105f, 14.134f));
- Commands->Set_Facing(chinook_obj1, 155.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "M07_XG_VehicleDrop1.txt");
- }
- }
- };
- DECLARE_SCRIPT(M07_Player_Vehicle, "")
- {
- float health;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( health, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_GDI );
- health = Commands->Get_Max_Health(obj);
- int vehicle_id = Commands->Get_ID(obj);
- // Let enemy tank drop controller know player vehicle id
- Commands->Send_Custom_Event(obj, Commands->Find_Object(101131), M07_PLAYER_VEHICLE_ID, vehicle_id);
- }
- void Damaged(GameObject * obj, GameObject * damager, float amount)
- {
- if(health > (.2 * Commands->Get_Max_Health(obj)))
- {
- float damage = health - Commands->Get_Health(obj);
- damage *= 0.5f;
- health -= damage;
- Commands->Set_Health(obj, health);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100757), M07_PLAYER_VEHICLE_KILLED, 1);
- }
-
- };
- DECLARE_SCRIPT(M07_Vehicle_Drop_Controller, "")
- {
-
- int vehicle_drop[8];
- int drop_zone;
- int m07_player_vehicle_killed;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( vehicle_drop, 1 );
- SAVE_VARIABLE( drop_zone, 2 );
- SAVE_VARIABLE( m07_player_vehicle_killed, 3 );
- }
- void Created (GameObject * obj)
- {
-
- vehicle_drop[0] = 100755;
- vehicle_drop[1] = 100758;
- vehicle_drop[2] = 100759;
- vehicle_drop[3] = 100760;
- vehicle_drop[4] = 100761;
- vehicle_drop[5] = 100762;
- vehicle_drop[6] = 100768;
- vehicle_drop[7] = 100769;
- drop_zone = 0;
- m07_player_vehicle_killed = 0;
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M07_VEHICLE_DROP_ZONE)
- {
-
- if(param == 10 && m07_player_vehicle_killed < 7)
- {
- // Havoc! Taking missile fire over the park. Launcher is unseen. Repeat, launcher is unseen.\n
- const char *conv_name = ("M07_CON024");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300700);
- }
- else
- {
- drop_zone = param;
- }
- }
- if (type == M07_PLAYER_VEHICLE_KILLED)
- {
- m07_player_vehicle_killed++;
- if(m07_player_vehicle_killed < 4)
- {
- if(m07_player_vehicle_killed < 3)
- {
- // Got you another ride, inbound now!\n
- const char *conv_name = ("M07_CON025");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300700);
- GameObject * drop_loc = Commands->Find_Object(vehicle_drop[drop_zone]);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "M07_XG_VehicleDrop1.txt");
- }
- else
- {
- // Complements of the local resistance.\n
- const char *conv_name = ("M07_CON026");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300700);
- GameObject * drop_loc = Commands->Find_Object(vehicle_drop[drop_zone]);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "M07_XG_VehicleDrop4.txt");
- }
-
- }
- else
- {
- // Last one, Captain. Recon show Nod's pulling back to the park.\n
- const char *conv_name = ("M07_CON027");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300700);
- GameObject * drop_loc = Commands->Find_Object(vehicle_drop[drop_zone]);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "M07_XG_VehicleDrop3.txt");
- }
-
- }
- }
- };
- DECLARE_SCRIPT(M07_Vehicle_Drop_Zone, "Zone_ID=0:int")
- {
- bool already_entered;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- int zone_id = Get_Int_Parameter("Zone_ID");
- if(Commands->Is_A_Star(enterer) && !already_entered)
- {
- if(zone_id == 10)
- {
- already_entered = true;
- }
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100757), M07_VEHICLE_DROP_ZONE, zone_id);
- }
- }
- };
- DECLARE_SCRIPT(M07_Biohazard_Barrel, "")
- {
- enum{BOOM};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( vehicle_drop, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Animation_Frame(obj, "o_barrl_bio.o_barrl_bio", 0);
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Create_Explosion("Ground Explosions Twiddler", Commands->Get_Position(obj));
-
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100781), M07_EXPLODE_BARRELS, 1);
- }
-
- };
- DECLARE_SCRIPT(M07_Stockpile_Object, "")
- {
- bool damaged;
- enum{BOOM, STILL_DAMAGED};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( damaged, 1 );
- }
- void Created (GameObject * obj)
- {
- damaged = false;
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- if (sound.Type == M07_EXPLODE_BARRELS)
- {
- Commands->Apply_Damage( obj, 100000.0f, "STEEL");
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == STILL_DAMAGED && damaged)
- {
- Commands->Create_Logical_Sound(obj, M07_ENGINEER_DAMAGED, Commands->Get_Position(obj), 40.0f);
- Commands->Start_Timer(obj, this, 8.0f, STILL_DAMAGED);
- damaged = true;
- }
- }
- void Damaged(GameObject * obj, GameObject * damager, float amount)
- {
- if(Commands->Get_Health(obj) < Commands->Get_Max_Health(obj))
- {
- Commands->Create_Logical_Sound(obj, M07_ENGINEER_DAMAGED, Commands->Get_Position(obj), 40.0f);
- Commands->Start_Timer(obj, this, 8.0f, STILL_DAMAGED);
- damaged = true;
- }
- else
- {
- damaged = false;
- Commands->Create_Logical_Sound(obj, M07_ENGINEER_FIXED, Commands->Get_Position(obj), 40.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Stockpile_Controller, "")
- {
- int ssm_crate_killed;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( ssm_crate_killed, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Spawner(100795, true);
- ssm_crate_killed = 0;
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M07_SSM_CRATE_KILLED)
- {
- ssm_crate_killed++;
- if(ssm_crate_killed == 4)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 706, 1, 0.0f);
- }
- }
- }
- };
- DECLARE_SCRIPT(M07_Stockpile_Engineer, "")
- {
-
- enum{GO_STOCKPILE};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Enemy_Seen(obj, false);
-
- ActionParamsStruct params;
- params.Set_Basic(this, INNATE_PRIORITY_ENEMY_SEEN + 5, GO_STOCKPILE);
- params.Set_Movement(Commands->Find_Object(100781), RUN, 1.0f);
- Commands->Action_Goto(obj, params);
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- ActionParamsStruct params;
- if (sound.Type == M07_ENGINEER_DAMAGED)
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 100 );
- params.Set_Attack (sound.Creator, 250.0f, 0.0f, 0);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
- }
- if (sound.Type == M07_ENGINEER_FIXED)
- {
- Commands->Action_Reset(obj, INNATE_PRIORITY_ENEMY_SEEN + 5);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == GO_STOCKPILE && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- }
- };
- DECLARE_SCRIPT(M07_Park_Controller, "")
- {
- int m07_artillery_killed;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( m07_artillery_killed, 1 );
- }
- void Created (GameObject * obj)
- {
- m07_artillery_killed = 0;
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if(type == M07_ARTILLERY_KILLED)
- {
- m07_artillery_killed++;
- if(m07_artillery_killed == 2)
- {
- // Destroy Artillery Piece Objective
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 703, 1, 5.0f);
- }
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Park_SSM, "")
- {
- enum{STILL_DAMAGED};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( destroy_stockpile, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == STILL_DAMAGED)
- {
- if(Commands->Get_Health(obj) < Commands->Get_Max_Health(obj))
- {
- Commands->Create_Logical_Sound(obj, M07_SSM_DAMAGED, Commands->Get_Position(obj), 1000.0f);
- Commands->Start_Timer(obj, this, 10.0f, STILL_DAMAGED);
- }
- else
- {
- Commands->Create_Logical_Sound(obj, M07_SSM_FIXED, Commands->Get_Position(obj), 1000.0f);
- }
-
- }
- }
- void Damaged(GameObject * obj, GameObject * damager, float amount)
- {
- if(Commands->Get_Health(obj) < Commands->Get_Max_Health(obj))
- {
- Commands->Create_Logical_Sound(obj, M07_SSM_DAMAGED, Commands->Get_Position(obj), 1000.0f);
- }
- else
- {
- Commands->Create_Logical_Sound(obj, M07_SSM_FIXED, Commands->Get_Position(obj), 1000.0f);
- }
-
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100799), M07_ARTILLERY_KILLED, 1);
- }
- };
- DECLARE_SCRIPT(M07_Nod_Obelisk, "")
- {
- int obelisk_weapon_id;
- bool converted;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( obelisk_weapon_id, 1 );
- SAVE_VARIABLE( converted, 2 );
- }
- void Created (GameObject * obj)
- {
- obelisk_weapon_id = 0;
- converted = false;
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if(type == M07_PLAYERTYPE_CHANGE_OBELISK)
- {
- converted = true;
- Commands->Set_Player_Type(Commands->Find_Object(obelisk_weapon_id), SCRIPT_PLAYERTYPE_GDI );
-
- }
- if(type == M00_OBELISK_WEAPON_ID)
- {
- obelisk_weapon_id = param;
-
- }
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(!converted)
- {
- // Custom to Objective_Controller that Obelisk has been destroyed
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 708, 1, 0.0f);
- // Custom to Obelisk Poke to turn it off so that it cannot be converted
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100805), M07_OBELISK_KILLED, 1, 0.0f);
- }
- }
-
- };
- DECLARE_SCRIPT(M07_Nod_Obelisk_MCT, "")
- {
- bool poked;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( poked, 1 );
- }
- void Created (GameObject * obj)
- {
- poked = false;
- Commands->Enable_HUD_Pokable_Indicator( obj, true );
- }
- void Poked(GameObject * obj, GameObject * poker)
- {
- if ((Commands->Is_A_Star(poker)) && (!poked))
- {
- Commands->Enable_HUD_Pokable_Indicator( obj, false );
- Commands->Create_Sound("Computer_Operate_02", Commands->Get_Position(obj), obj);
- poked = true;
- // Change playertype of Nod Obelisk
- Commands->Send_Custom_Event(obj, Commands->Find_Object(168926), M07_PLAYERTYPE_CHANGE_OBELISK, 1, 0.0f);
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 708, 1, 0.0f);
- }
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if(type == M07_OBELISK_KILLED)
- {
- Commands->Enable_HUD_Pokable_Indicator( obj, false );
- poked = true;
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Park_Zone, "Zone=0:int")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
-
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ((Commands->Is_A_Star(enterer)))
- {
-
- int activate_zone = Get_Int_Parameter("Zone");
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100801), M07_MOVE_STEALTH_TANK, activate_zone);
- }
- }
- };
- DECLARE_SCRIPT(M07_Activate_Encounter, "Spawner_ID1=0:int, Spawner_ID2=0:int, Spawner_ID3=0:int, Spawner_ID4=0:int, Spawner_ID5=0:int, Spawner_ID6=0:int")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
-
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
-
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ((Commands->Is_A_Star(enterer)) && (!already_entered))
- {
- already_entered = true;
-
- int spawner_id1 = Get_Int_Parameter("Spawner_ID1");
- int spawner_id2 = Get_Int_Parameter("Spawner_ID2");
- int spawner_id3 = Get_Int_Parameter("Spawner_ID3");
- int spawner_id4 = Get_Int_Parameter("Spawner_ID4");
- int spawner_id5 = Get_Int_Parameter("Spawner_ID5");
- int spawner_id6 = Get_Int_Parameter("Spawner_ID6");
-
- if(spawner_id1 != 0)
- {
- Commands->Enable_Spawner(spawner_id1, true);
- }
- if(spawner_id2 != 0)
- {
- Commands->Enable_Spawner(spawner_id2, true);
- }
- if(spawner_id3 != 0)
- {
- Commands->Enable_Spawner(spawner_id3, true);
- }
- if(spawner_id4 != 0)
- {
- Commands->Enable_Spawner(spawner_id4, true);
- }
- if(spawner_id5 != 0)
- {
- Commands->Enable_Spawner(spawner_id5, true);
- }
- if(spawner_id6 != 0)
- {
- Commands->Enable_Spawner(spawner_id6, true);
- }
-
- }
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M07_DEACTIVATE_ENCOUNTER)
- {
- int spawner_id1 = Get_Int_Parameter("Spawner_ID1");
- int spawner_id2 = Get_Int_Parameter("Spawner_ID2");
- int spawner_id3 = Get_Int_Parameter("Spawner_ID3");
- int spawner_id4 = Get_Int_Parameter("Spawner_ID4");
- int spawner_id5 = Get_Int_Parameter("Spawner_ID5");
- int spawner_id6 = Get_Int_Parameter("Spawner_ID6");
-
- if(spawner_id1 != 0)
- {
- Commands->Enable_Spawner(spawner_id1, false);
- }
- if(spawner_id2 != 0)
- {
- Commands->Enable_Spawner(spawner_id2, false);
- }
- if(spawner_id3 != 0)
- {
- Commands->Enable_Spawner(spawner_id3, false);
- }
- if(spawner_id4 != 0)
- {
- Commands->Enable_Spawner(spawner_id4, false);
- }
- if(spawner_id5 != 0)
- {
- Commands->Enable_Spawner(spawner_id5, false);
- }
- if(spawner_id6 != 0)
- {
- Commands->Enable_Spawner(spawner_id6, false);
- }
- }
- }
- };
- DECLARE_SCRIPT(M07_Deactivate_Encounter, "Activate_Zone=0:int")
- {
-
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
-
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
-
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ((Commands->Is_A_Star(enterer)) && (!already_entered))
- {
- already_entered = true;
-
- int activate_zone = Get_Int_Parameter("Activate_Zone");
- Commands->Send_Custom_Event(obj, Commands->Find_Object(activate_zone), M07_DEACTIVATE_ENCOUNTER, 1);
- }
- }
- };
- DECLARE_SCRIPT(M07_Encounter_Unit, "Waypath_ID=0:int, Priority=0:int, Suicide=0:int, Stationary_at_End=0:int")
- {
- int waypath_id;
- int priority;
- bool suicide;
- bool stationary;
- enum{DIE_SURPRISE, GO_STAR, WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( poke_id, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- waypath_id = Get_Int_Parameter("Waypath_ID");
- priority = Get_Int_Parameter("Priority");
- suicide = (Get_Int_Parameter("Suicide") == 1) ? true : false;
- stationary = (Get_Int_Parameter("Stationary_at_End") == 1) ? true : false;
- if(waypath_id == 0)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- else if(waypath_id == 1)
- {
- params.Set_Basic( this, priority, GO_STAR );
- params.Set_Movement( STAR, RUN, 2.0f );
- Commands->Action_Goto ( obj, params );
- }
- else
- {
- params.Set_Basic( this, priority, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = waypath_id;
- Commands->Action_Goto( obj, params );
- }
-
- if(suicide)
- {
- Commands->Start_Timer (obj, this, 15.0f, DIE_SURPRISE);
- }
- }
- void Timer_Expired(GameObject* obj, int timer_id)
- {
-
- if(timer_id == DIE_SURPRISE)
- {
- Commands->Apply_Damage( obj, 100000, "STEEL", NULL );
- Vector3 obj_pos = Commands->Get_Position(obj);
- Vector3 shot_pos;
- shot_pos.X = obj_pos.X + 4.0f;
- shot_pos.Y = obj_pos.Y + 4.0f;
- shot_pos.Z = obj_pos.Z + 4.0f;
- Commands->Create_Sound("Sniper_Fire_01", shot_pos, obj);
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (reason != ACTION_COMPLETE_NORMAL)
- {
- return;
- }
- if (action_id == WAYPATH)
- {
- Commands->Innate_Force_State_Enemy_Seen(obj, STAR);
- if(stationary)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- }
- }
- };
- DECLARE_SCRIPT(M07_V05_Controller, "")
- {
- bool encounter;
- int m07_v05_units;
- bool reinforce;
- enum{REINFORCEMENT_CHECK};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( encounter, 1 );
- SAVE_VARIABLE( m07_v05_units, 2 );
- SAVE_VARIABLE( reinforce, 3 );
- }
- void Created (GameObject * obj)
- {
- m07_v05_units = 0;
-
- encounter= true;
- reinforce = true;
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if(type == M07_REINFORCEMENT_UNIT_KILLED)
- {
- m07_v05_units--;
-
- }
- if(type == M07_REINFORCEMENT_UNIT_CREATED)
- {
- m07_v05_units++;
- }
- if (type == M07_DEACTIVATE_ENCOUNTER)
- {
- encounter = false;
- }
- if (type == M07_ACTIVATE_ENCOUNTER)
- {
- Commands->Start_Timer(obj, this, 0.0f, REINFORCEMENT_CHECK);
- }
- if (type == M07_V05_OFFICER_KILLED)
- {
- reinforce = false;
- }
-
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == REINFORCEMENT_CHECK && encounter)
- {
- if(m07_v05_units < 3 && reinforce)
- {
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(30.873f, -9.825f, 5.346f));
- Commands->Set_Facing(chinook_obj1, -80.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7I_TroopDrop1.txt");
- }
- }
- Commands->Start_Timer(obj, this, 30.0f, REINFORCEMENT_CHECK);
- }
-
- };
- DECLARE_SCRIPT(M07_V05_Officer, "")
- {
-
- enum{REINFORCEMENT_CHECK};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( encounter, 1 );
- // SAVE_VARIABLE( m07_v05_units, 2 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100899), M07_V05_OFFICER_KILLED, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_V05_Unit, "Stationary=0:int")
- {
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( poke_id, 1 );
- }
- void Created (GameObject * obj)
- {
- bool stationary = (Get_Int_Parameter("Stationary") == 1) ? true : false;
- if(stationary)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100899), M07_REINFORCEMENT_UNIT_CREATED, 1, 2.0f);
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100899), M07_REINFORCEMENT_UNIT_KILLED, 1, 2.0f);
- }
- };
- DECLARE_SCRIPT(M07_Activate_V05, "")
- {
- bool already_entered;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- {
- if(Commands->Is_A_Star(enterer) && !already_entered)
- {
- already_entered = true;
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100899), M07_ACTIVATE_ENCOUNTER, 1);
- }
- }
- }
-
- };
- DECLARE_SCRIPT(M07_Nod_Light_Tank_Dec, "Attack_ID0=0:int, Attack_ID1=0:int, Attack_ID2=0:int")
- {
- bool attacking;
- int attack_id[3];
-
- enum{ATTACK_OVER, ATTACK_LOC};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- SAVE_VARIABLE( attack_id, 2 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_NOD );
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = false;
- attack_id[0] = Get_Int_Parameter("Attack_ID0");
- attack_id[1] = Get_Int_Parameter("Attack_ID1");
- attack_id[2] = Get_Int_Parameter("Attack_ID2");
- if(attack_id[0] != 0)
- {
- int random = Commands->Get_Random_Int(0,2);
- while(attack_id[random] == 0)
- {
- random = Commands->Get_Random_Int(0,2);
- }
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (Commands->Find_Object(attack_id[random]), 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack( obj, params );
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_LOC);
- }
-
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (damager, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- if(timer_id == ATTACK_LOC && !attacking)
- {
-
- int random = Commands->Get_Random_Int(0,2);
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (Commands->Find_Object(attack_id[random]), 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack( obj, params );
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_LOC);
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
-
- }
-
- };
- DECLARE_SCRIPT(M07_Nod_Inn_Light_Tank_Dec, "APC_ID=0:int")
- {
- bool attacking;
- int apc_id;
-
- enum{ATTACK_OVER};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_NOD );
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = false;
- apc_id = Get_Int_Parameter("APC_ID");
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (damager, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- };
- DECLARE_SCRIPT(M07_Inn_APC, "")
- {
- bool attacking;
- int reinforce;
-
- enum{DROP_SOLDIERS, CHECK_ENEMY};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- SAVE_VARIABLE( reinforce, 2 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = false;
- reinforce = 0;
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 1 );
- params.Set_Attack (enemy, 200.0f, 5.0f, 1);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack (obj, params);
- Commands->Start_Timer (obj, this, 30.0f, CHECK_ENEMY);
- }
- }
-
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- ActionParamsStruct params;
- if(type == M07_REINFORCEMENT_KILLED)
- {
- reinforce++;
- if(reinforce < 7)
- {
- char param1[10];
- sprintf(param1, "%d", Commands->Get_ID(obj));
- Vector3 pos = Commands->Get_Position(obj);
- float facing = Commands->Get_Facing(obj);
- float a = cos(DEG_TO_RADF(facing)) * -4.0;
- float b = sin(DEG_TO_RADF(facing)) * -4.0;
-
- Vector3 soldier_loc1 = pos + Vector3(a, b + .5f, 0.5f);
- GameObject * soldier1 = Commands->Create_Object("M07_Nod_APC", soldier_loc1);
- Commands->Attach_Script(soldier1, "M07_Inn_APC_Soldier", param1);
- }
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id )
- {
-
- if(timer_id == CHECK_ENEMY)
- {
- attacking = false;
- }
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
-
- }
- };
- DECLARE_SCRIPT(M07_Inn_APC_Soldier, "APC_ID=0:int")
- {
- int apc_id;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- apc_id = Get_Int_Parameter("APC_ID");
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, 1 );
- params.Set_Movement( STAR, RUN, 20.0f );
- Commands->Action_Goto (obj, params);
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(Commands->Find_Object(apc_id))
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Inn_Balcony_Sniper, "APC_ID=0:int")
- {
- int apc_id;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- apc_id = Get_Int_Parameter("APC_ID");
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(Commands->Find_Object(apc_id))
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Activate_V01, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer))
- {
-
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100952), M07_ACTIVATE_V01, 1, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Deactivate_V01, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer))
- {
-
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100953), M07_DEACTIVATE_V01, 1, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_V01_Controller, "")
- {
- bool activated;
- int m07_v01_unit_killed;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( activated, 1 );
- SAVE_VARIABLE( m07_v01_unit_killed, 2 );
- }
- void Created (GameObject * obj)
- {
- activated = false;
- m07_v01_unit_killed = 0;
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- ActionParamsStruct params;
- if(type == M07_ACTIVATE_V01 && !activated)
- {
- activated = true;
- Commands->Enable_Spawner(100956, true);
- Commands->Enable_Spawner(100962, true);
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-193.706f, -82.114f, 4.987f));
- Commands->Set_Facing(chinook_obj1, 20.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop2.txt");
- }
- if(type == M07_V01_UNIT_KILLED && activated)
- {
- m07_v01_unit_killed++;
- if(m07_v01_unit_killed%2 == 0)
- {
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-193.706f, -82.114f, 4.987f));
- Commands->Set_Facing(chinook_obj1, 20.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop2.txt");
- }
- }
- if(type == M07_DEACTIVATE_V01 && activated)
- {
- activated = false;
- Commands->Enable_Spawner(100956, false);
- Commands->Enable_Spawner(100962, false);
- }
-
- }
-
- };
- DECLARE_SCRIPT(M07_V01_Destroyed_Flame_Tank, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- ActionParamsStruct params;
- if(type == M07_ACTIVATE_V01)
- {
- Commands->Apply_Damage( obj, 10000.0f, "DEATH");
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100953), M07_ACTIVATE_V01, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_Nod_Buggy_Dec, "")
- {
- bool attacking;
-
- enum{ATTACK_OVER};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_NOD );
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = false;
-
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (damager, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
-
- }
-
- };
- DECLARE_SCRIPT(M07_Nod_Recon_Bike_Dec, "")
- {
- bool attacking;
-
- enum{ATTACK_OVER};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_NOD );
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = false;
-
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, 1 );
- params.Set_Attack (damager, 250.0f, 0.0f, 1);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
-
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
-
- }
-
- };
- DECLARE_SCRIPT(M07_V01_Unit, "")
- {
-
- enum{GO_STAR};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
-
- Commands->Start_Timer(obj, this, 3.0f, 10);
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == GO_STAR)
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN, GO_STAR );
- params.Set_Movement( STAR, RUN, 2.0f );
- Commands->Action_Goto ( obj, params );
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(100953), M07_V01_UNIT_KILLED, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_Activate_Triangle_Apache, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer))
- {
-
- Commands->Enable_Spawner(101010, true);
-
- }
- }
- };
- DECLARE_SCRIPT(M07_Triangle_Apache, "")
- {
- bool attacking;
- int curr_waypath;
- enum{WAYPATH, TRIANGLE_PATROL, ATTACK_OVER};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- SAVE_VARIABLE( curr_waypath, 2 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- attacking = false;
- curr_waypath = 101011;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 101011;
- Commands->Action_Goto( obj, params );
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- ActionParamsStruct params;
- if (action_id == WAYPATH && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Enable_Enemy_Seen(obj, true);
- curr_waypath = 101016;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, TRIANGLE_PATROL );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = curr_waypath;
- Commands->Action_Attack( obj, params );
- }
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, TRIANGLE_PATROL );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.WaypathID = curr_waypath;
- Commands->Modify_Action (obj, TRIANGLE_PATROL, params);
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- ActionParamsStruct params;
- if (sound.Type == M07_RELOCATE_TRIANGLE_APACHE)
- {
- curr_waypath = 101033;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, TRIANGLE_PATROL );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = curr_waypath;
- Commands->Action_Attack( obj, params );
- }
- }
-
- };
- DECLARE_SCRIPT(M07_Relocate_Triangle_Apache, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer))
- {
-
- Commands->Create_Logical_Sound(obj, M07_RELOCATE_TRIANGLE_APACHE, Commands->Get_Position(obj), 100.0f);
-
- }
- }
- };
- DECLARE_SCRIPT(M07_Triangle_APC, "")
- {
-
- void Killed (GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(101056), M07_TRIANGLE_APC_KILLED, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_Triangle_APC_Soldier, "APC_ID=0:int")
- {
- int apc_id;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- apc_id = Get_Int_Parameter("APC_ID");
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, 1 );
- params.Set_Movement( STAR, RUN, 20.0f );
- Commands->Action_Goto (obj, params);
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(Commands->Find_Object(apc_id))
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Triangle_Guard, "APC_ID=0:int")
- {
- int apc_id;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- apc_id = Get_Int_Parameter("APC_ID");
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(Commands->Find_Object(apc_id))
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Triangle_Controller, "")
- {
- int m07_triangle_apc_killed;
- int m07_triangle_unit_killed;
- int civ_captive_killed;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( m07_triangle_apc_killed, 1 );
- SAVE_VARIABLE( m07_triangle_unit_killed, 2 );
- SAVE_VARIABLE( civ_captive_killed, 3 );
- }
- void Created (GameObject * obj)
- {
- m07_triangle_apc_killed = 0;
- m07_triangle_unit_killed = 0;
- civ_captive_killed = 0;
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- if(type == M07_TRIANGLE_APC_KILLED)
- {
- m07_triangle_apc_killed++;
- if(m07_triangle_apc_killed == 2)
- {
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-531.675f, -87.333f, 13.908f));
- Commands->Set_Facing(chinook_obj1, -70.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop3.txt");
- }
- }
- if(type == M07_TRIANGLE_UNIT_KILLED)
- {
- m07_triangle_unit_killed++;
- if(m07_triangle_unit_killed%3 == 0 && m07_triangle_unit_killed < 9)
- {
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-531.675f, -87.333f, 13.908f));
- Commands->Set_Facing(chinook_obj1, -70.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop3.txt");
- }
- }
- if(type == M07_SPAWN_TRIANGLE_CIV)
- {
- civ_captive_killed++;
- if(civ_captive_killed == 2)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 705, 2, 0.0f);
- }
- switch(param)
- {
- case 1:
- {
- Commands->Enable_Spawner(101057, true);
- }
- break;
- case 2:
- {
- Commands->Enable_Spawner(101058, true);
- }
- break;
- }
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Triangle_Unit, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(101056), M07_TRIANGLE_UNIT_KILLED, 1, 0.0f);
-
- }
- };
- DECLARE_SCRIPT(M07_Activate_Hostage_Encounter, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer))
- {
- // Hostage
- Commands->Enable_Spawner(101066, true);
- // Hostage Takers
- Commands->Enable_Spawner(101073, true);
- Commands->Enable_Spawner(101074, true);
- Commands->Enable_Spawner(101079, true);
-
- }
- }
- };
- DECLARE_SCRIPT(M07_Fuel_Barrel, "")
- {
- enum{BOOM};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( vehicle_drop, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Animation_Frame(obj, "o_barrl_fuel.o_barrl_fuel", 0);
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- Commands->Create_Explosion("Ground Explosions Twiddler", Commands->Get_Position(obj));
-
- Commands->Send_Custom_Event(obj, Commands->Find_Object(101059), M07_EXPLODE_BARRELS, 1);
- }
-
- };
- DECLARE_SCRIPT(M07_Hostage_Controller, "")
- {
- bool destroy_stockpile;
- enum{BOOM};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( destroy_stockpile, 1 );
- }
- void Created (GameObject * obj)
- {
- destroy_stockpile = false;
- Commands->Enable_Spawner(100795, true);
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M07_EXPLODE_BARRELS && destroy_stockpile == false)
- {
- destroy_stockpile = true;
-
- Commands->Apply_Damage( Commands->Find_Object(101060), 10000.0f, "STEEL");
- Commands->Apply_Damage( Commands->Find_Object(101061), 10000.0f, "STEEL");
- Commands->Apply_Damage( Commands->Find_Object(101062), 10000.0f, "STEEL");
- Commands->Apply_Damage( Commands->Find_Object(101063), 10000.0f, "STEEL");
- Commands->Apply_Damage( Commands->Find_Object(101064), 10000.0f, "STEEL");
- Commands->Apply_Damage( Commands->Find_Object(101065), 10000.0f, "STEEL");
- Commands->Apply_Damage( Commands->Find_Object(101084), 10000.0f, "STEEL");
-
-
- }
- }
- };
- DECLARE_SCRIPT(M07_Hostage, "")
- {
- bool poked;
- enum{WAYPATH, SWITCH_TYPE};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( poked, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 101067;
- Commands->Action_Goto( obj, params );
- Commands->Start_Timer(obj, this, 6.0f, SWITCH_TYPE);
- poked = false;
- }
- void Poked(GameObject * obj, GameObject * poker)
- {
- ActionParamsStruct params;
- if ((Commands->Is_A_Star(poker)) && (!poked))
- {
- poked = true;
- // Assume hands over head anim
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 1);
- params.Set_Animation( "H_A_HOST_L1C", false );
- Commands->Action_Play_Animation (obj, params);
- Commands->Set_Innate_Is_Stationary(obj, false);
- Vector3 pos = Commands->Get_Position(obj);
- float facing = Commands->Get_Facing(obj);
- float a = cos(DEG_TO_RADF(facing)) * 1.5;
- float b = sin(DEG_TO_RADF(facing)) * 1.5;
- Vector3 powerup_loc = pos + Vector3(a, b, 0.5f);
- Commands->Create_Object("Ramjet_Weapon_Powerup", powerup_loc);
- }
- }
-
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- ActionParamsStruct params;
- if (reason != ACTION_COMPLETE_NORMAL)
- {
- return;
- }
- if (action_id == WAYPATH)
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
-
- // Assume hands over head anim
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 1);
- params.Set_Animation( "H_A_HOST_L1B", true );
- Commands->Action_Play_Animation (obj, params);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == SWITCH_TYPE)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_GDI );
- }
- }
- };
- DECLARE_SCRIPT(M07_Hostage_Taker, "Waypath_ID=0:int")
- {
- bool destroy_stockpile;
- enum{WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( destroy_stockpile, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- int waypath_id = Get_Int_Parameter("Waypath_ID");
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = waypath_id;
- Commands->Action_Goto( obj, params );
- }
-
- };
- DECLARE_SCRIPT(M07_APC_Dec, "")
- {
- bool attacking;
- int reinforce;
-
- enum{DROP_SOLDIERS, CHECK_ENEMY};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- SAVE_VARIABLE( reinforce, 2 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = false;
- reinforce = 0;
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 1 );
- params.Set_Attack (enemy, 200.0f, 5.0f, 1);
- params.AttackCheckBlocked = true;
- Commands->Action_Attack (obj, params);
- Commands->Start_Timer (obj, this, 30.0f, CHECK_ENEMY);
- }
- }
-
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- ActionParamsStruct params;
- if(type == M07_REINFORCEMENT_KILLED)
- {
- reinforce++;
- if(reinforce < 7)
- {
- char param1[10];
- sprintf(param1, "%d", Commands->Get_ID(obj));
- Vector3 pos = Commands->Get_Position(obj);
- float facing = Commands->Get_Facing(obj);
- float a = cos(DEG_TO_RADF(facing)) * -4.0;
- float b = sin(DEG_TO_RADF(facing)) * -4.0;
-
- Vector3 soldier_loc1 = pos + Vector3(a, b + .5f, 0.5f);
- GameObject * soldier1 = Commands->Create_Object("M07_Nod_APC", soldier_loc1);
- Commands->Attach_Script(soldier1, "M07_APC_Dec_Soldier", param1);
- }
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id )
- {
-
- if(timer_id == CHECK_ENEMY)
- {
- attacking = false;
- }
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
-
- }
- };
- DECLARE_SCRIPT(M07_APC_Dec_Soldier, "APC_ID=0:int")
- {
- int apc_id;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- apc_id = Get_Int_Parameter("APC_ID");
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN - 5, 1 );
- params.Set_Movement( STAR, RUN, 20.0f );
- Commands->Action_Goto (obj, params);
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- if(Commands->Find_Object(apc_id))
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(apc_id), M07_REINFORCEMENT_KILLED, apc_id, 0.0f);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Activate_Bridge_Civ, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer))
- {
- // Bridge Civilians
- Commands->Enable_Spawner(101109, true);
- Commands->Enable_Spawner(101114, true);
- // Bridge overlook Apache
- Commands->Enable_Spawner(109150, true);
- }
- }
- };
- DECLARE_SCRIPT(M07_Bridge_Civ, "Waypath_ID=0:int")
- {
- enum{WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- int waypath_id = Get_Int_Parameter("Waypath_ID");
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 0.5f );
- params.WaypathID = waypath_id;
- Commands->Action_Goto( obj, params );
-
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
-
- Commands->Set_Innate_Is_Stationary(obj, true);
-
- }
-
- };
- DECLARE_SCRIPT(M07_Activate_E10_Tank_Drop, "")
- {
- int m07_player_vehicle_id;
- bool already_entered;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( m07_player_vehicle_id, 1 );
- SAVE_VARIABLE( already_entered, 2 );
- }
- void Created (GameObject * obj)
- {
- m07_player_vehicle_id = 0;
- already_entered = false;
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == M07_PLAYER_VEHICLE_ID )
- {
- m07_player_vehicle_id = param;
- }
- if ( type == M07_E10_TANK_CREATED )
- {
- Commands->Send_Custom_Event(obj, sender, M07_PLAYER_VEHICLE_ID, Commands->Get_ID(sender));
- }
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer) && !already_entered)
- {
- already_entered = true;
- GameObject * drop_loc = Commands->Find_Object(101132);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "M07_XG_VehicleDrop2.txt");
- }
- }
- };
- DECLARE_SCRIPT(M07_E10_Tank, "")
- {
- int m07_player_vehicle_id;
- enum{GO_PLAYER_VEHICLE};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( m07_player_vehicle_id, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Enemy_Seen(obj, true);
- m07_player_vehicle_id = 0;
- Commands->Send_Custom_Event(obj, Commands->Find_Object(101131), M07_E10_TANK_CREATED, 1);
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == M07_PLAYER_VEHICLE_ID )
- {
- m07_player_vehicle_id = param;
- Commands->Start_Timer(obj, this, 3.0f, 10);
- }
-
- }
- void Enemy_Seen(GameObject * obj, GameObject * enemy)
- {
- ActionParamsStruct params;
- if (Commands->Is_A_Star(enemy))
- {
- params.Set_Basic(this, INNATE_PRIORITY_ENEMY_SEEN + 5, GO_PLAYER_VEHICLE);
- params.Set_Attack(Commands->Find_Object(m07_player_vehicle_id), 40.0f, 1.0f, true);
- params.AttackCheckBlocked = false;
- params.MoveFollow = true;
- Commands->Modify_Action (obj, GO_PLAYER_VEHICLE, params);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == GO_PLAYER_VEHICLE)
- {
- ActionParamsStruct params;
- params.Set_Basic(this, INNATE_PRIORITY_ENEMY_SEEN + 5, GO_PLAYER_VEHICLE);
- params.Set_Attack(Commands->Find_Object(m07_player_vehicle_id), 40.0f, 1.0f, true);
- params.AttackCheckBlocked = false;
- params.MoveFollow = true;
- Commands->Action_Attack(obj, params);
- }
- }
- };
- DECLARE_SCRIPT(M07_Para_Drop_Controller, "")
- {
-
- int para_drop[7];
- int drop_zone;
- int m07_paradrop_unit1_killed;
- int m07_paradrop_unit2_killed;
- int m07_paradrop_unit3_killed;
- int m07_paradrop_unit4_killed;
- bool active;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( para_drop, 1 );
- SAVE_VARIABLE( drop_zone, 2 );
- SAVE_VARIABLE( m07_paradrop_unit1_killed, 3 );
- SAVE_VARIABLE( m07_paradrop_unit2_killed, 4 );
- SAVE_VARIABLE( m07_paradrop_unit3_killed, 5 );
- SAVE_VARIABLE( m07_paradrop_unit4_killed, 6 );
- SAVE_VARIABLE( active, 7 );
- }
- void Created (GameObject * obj)
- {
-
- para_drop[0] = 101134;
- para_drop[1] = 101138;
- para_drop[2] = 101139;
- para_drop[3] = 101140;
- para_drop[4] = 101141;
- para_drop[5] = 101142;
- para_drop[6] = 101143;
-
-
- drop_zone = 0;
- m07_paradrop_unit1_killed = 0;
- m07_paradrop_unit2_killed = 0;
- m07_paradrop_unit3_killed = 0;
- m07_paradrop_unit4_killed = 0;
- active = true;
-
- }
- void Custom(GameObject * obj, int type, int param, GameObject * sender)
- {
- if (type == M07_DEACTIVATE_PARADROP)
- {
-
- active = false;
-
- }
- if (type == M07_VEHICLE_DROP_ZONE)
- {
-
- drop_zone = param;
-
- }
- if(type == M07_PARADROP_UNIT_KILLED && active)
- {
- switch(param)
- {
- case 1:
- {
- m07_paradrop_unit1_killed++;
- if(m07_paradrop_unit1_killed%3 == 0 && m07_paradrop_unit1_killed < 9)
- {
- GameObject * drop_loc = Commands->Find_Object(para_drop[drop_zone]);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop4.txt");
- }
- }
- break;
- case 2:
- {
- m07_paradrop_unit2_killed++;
- if(m07_paradrop_unit2_killed < 2)
- {
-
- GameObject * drop_loc = Commands->Find_Object(109837);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop5.txt");
- }
- }
- break;
- case 3:
- {
- m07_paradrop_unit3_killed++;
- if(m07_paradrop_unit3_killed < 2)
- {
-
- GameObject * drop_loc = Commands->Find_Object(109838);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop6.txt");
- }
- }
- break;
- case 4:
- {
- m07_paradrop_unit4_killed++;
- if(m07_paradrop_unit4_killed < 2)
- {
-
- GameObject * drop_loc = Commands->Find_Object(109839);
- float drop_facing = Commands->Get_Facing(drop_loc);
-
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Commands->Get_Position(drop_loc));
- Commands->Set_Facing(chinook_obj1, drop_facing);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop7.txt");
- }
- }
- break;
- }
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Para_Drop_Zone, "Zone_ID=0:int")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- int zone_id = Get_Int_Parameter("Zone_ID");
- if(Commands->Is_A_Star(enterer))
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(101133), M07_VEHICLE_DROP_ZONE, zone_id);
- }
- }
- };
- DECLARE_SCRIPT(M07_Para_Drop_Unit, "Unit_ID=0:int")
- {
- enum{GO_STAR};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- if(Get_Int_Parameter("Unit_ID") == 1)
- {
- Commands->Start_Timer(obj, this, 3.0f, GO_STAR);
- }
- else
- {
- Commands->Set_Innate_Is_Stationary(obj, true);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == GO_STAR)
- {
- params.Set_Basic (this, (INNATE_PRIORITY_ENEMY_SEEN - 5), 10);
- params.Set_Movement (STAR, RUN, 10.0f);
- Commands->Action_Goto (obj, params);
- }
- }
- void Killed(GameObject * obj, GameObject * killer)
- {
- int unit_id = Get_Int_Parameter("Unit_ID");
- Commands->Send_Custom_Event(obj, Commands->Find_Object(101133), M07_PARADROP_UNIT_KILLED, unit_id);
- }
-
- };
- DECLARE_SCRIPT(M07_Activate_Para_Drop, "")
- {
- bool already_entered;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
-
- if(Commands->Is_A_Star(enterer) && !already_entered)
- {
- already_entered = true;
- GameObject * chinook_obj1 = Commands->Create_Object ( "Invisible_Object", Vector3(-417.090f, 39.921f, 20.435f));
- Commands->Set_Facing(chinook_obj1, 0.000f);
- Commands->Attach_Script(chinook_obj1, "Test_Cinematic", "X7D_CHTroopdrop4.txt");
- GameObject * chinook_obj2 = Commands->Create_Object ( "Invisible_Object", Vector3(-437.171f, 35.261f, 36.155f));
- Commands->Set_Facing(chinook_obj2, -5.000f);
- Commands->Attach_Script(chinook_obj2, "Test_Cinematic", "X7D_CHTroopdrop5.txt");
- GameObject * chinook_obj3 = Commands->Create_Object ( "Invisible_Object", Vector3(-474.645f, 36.897f, 32.859f));
- Commands->Set_Facing(chinook_obj3, 0.000f);
- Commands->Attach_Script(chinook_obj3, "Test_Cinematic", "X7D_CHTroopdrop6.txt");
- GameObject * chinook_obj4 = Commands->Create_Object ( "Invisible_Object", Vector3(-516.036f, 40.087f, 30.558f));
- Commands->Set_Facing(chinook_obj4, -5.000f);
- Commands->Attach_Script(chinook_obj4, "Test_Cinematic", "X7D_CHTroopdrop7.txt");
- }
- }
- };
- DECLARE_SCRIPT(M07_Deactivate_Para_Drop, "")
- {
- bool already_entered;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
-
- if(Commands->Is_A_Star(enterer) && !already_entered)
- {
- already_entered = true;
- Commands->Send_Custom_Event(obj, Commands->Find_Object(101133), M07_DEACTIVATE_PARADROP, 1);
- }
- }
- };
- DECLARE_SCRIPT(M07_Flyover_Controller, "")
- {
- int last;
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE(last, 1);
- }
-
- void Created(GameObject * obj)
- {
- Commands->Start_Timer(obj, this, 10.0f, 0);
- last = 0;
-
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- char *flyovers[8] =
- {
- "X7A_CPlane_00.txt",
- "X7A_CPlane_01.txt",
- "X7A_CPlane_02.txt",
- "X7A_CPlane_03.txt",
- "X7A_Apache_00.txt",
- "X7A_Apache_01.txt",
- "X7A_Apache_02.txt",
- "X7A_Apache_03.txt",
-
- };
- int random = Commands->Get_Random_Int ( 0, 7 );
-
- while (random == last)
- {
- random = Commands->Get_Random_Int ( 0, 7 );
- }
- GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
- Commands->Attach_Script(controller, "Test_Cinematic", flyovers[random]);
- Commands->Start_Timer(obj, this, 10.0f, 0);
-
- last = random;
- }
- };
- DECLARE_SCRIPT(M07_Activate_Flyover, "Text_File:string")
- {
- bool already_entered;
- enum {PLAY_AGAIN};
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE(already_entered, 1);
- }
-
- void Created(GameObject * obj)
- {
- already_entered = false;
- }
- void Entered(GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer) && !already_entered)
- {
- already_entered = true;
- const char * flyover = Get_Parameter("Text_File");
- GameObject *controller = Commands->Create_Object("Invisible_Object", Vector3(0,0,0));
- Commands->Attach_Script(controller, "Test_Cinematic", flyover);
- Commands->Start_Timer(obj, this, 10.0f, PLAY_AGAIN);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id)
- {
- if(timer_id == PLAY_AGAIN)
- {
- already_entered = false;
- }
- }
- };
- DECLARE_SCRIPT(M07_Disable_Hibernation, "")
- {
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( m08_petra_a1_unit, 1 );
- }
- void Created(GameObject * obj)
- {
- Commands->Enable_Hibernation(obj, false);
- }
- };
- DECLARE_SCRIPT(M07_Move_To_Evac, "")
- {
-
- bool already_entered;
- bool star_in_blast;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- SAVE_VARIABLE( star_in_blast, 2 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
-
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if(Commands->Is_A_Star(enterer))
- {
- // Customs to move team to evac site
- // Havoc
- Commands->Send_Custom_Event(obj, STAR, M07_GO_EVAC_SITE, 1, 0.0f);
- // Hotwire
- Commands->Send_Custom_Event(obj, HOTWIRE, M07_GO_EVAC_SITE, 1, 0.0f);
- // Patch
- Commands->Send_Custom_Event(obj, PATCH, M07_GO_EVAC_SITE, 1, 0.0f);
- // Gunner
- Commands->Send_Custom_Event(obj, GUNNER, M07_GO_EVAC_SITE, 1, 0.0f);
- // Deadeye
- Commands->Send_Custom_Event(obj, DEADEYE, M07_GO_EVAC_SITE, 1, 0.0f);
- // Sydney
- Commands->Send_Custom_Event(obj, SYDNEY, M07_GO_EVAC_SITE, 1, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Move_Hotwire, "Move_Loc=0:int")
- {
-
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
-
- }
- void Created (GameObject * obj)
- {
-
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if (Commands->Is_A_Star(enterer))
- {
- int move_loc = Get_Int_Parameter("Move_Loc");
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100658), M07_MOVE_HOTWIRE, move_loc, 0.0f);
- }
- }
- };
- DECLARE_SCRIPT(M07_Player_Rocket_Emplacement, "")
- {
-
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
-
- }
- void Created (GameObject * obj)
- {
-
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(damager == Commands->Find_Object(100905))
- {
- if(Commands->Get_Health(obj) < 10.0f)
- {
- Commands->Set_Health(obj, 10.0f);
- }
- if(Commands->Get_Health(obj) < (.3 * Commands->Get_Max_Health(obj)))
- {
- Commands->Apply_Damage( obj, -10000.0f, "STEEL", NULL );
- }
- }
- }
- };
- DECLARE_SCRIPT(M07_Playertype_Neutral, "")
- {
-
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
-
- }
- void Created (GameObject * obj)
- {
- Commands->Set_Player_Type(obj, SCRIPT_PLAYERTYPE_NEUTRAL );
- }
- };
- DECLARE_SCRIPT(M07_Inn_Evac, "")//104496
- {
-
- int evac_waypath_id;
- int evac_helicopter_id;
- int dead6_cnt;
- int evac_rope_id;
- enum{LOWER_ROPE, CHINOOK_OUT, DESTROY_SYDNEY};
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE(evac_waypath_id, 1);
- SAVE_VARIABLE(evac_helicopter_id, 2);
- SAVE_VARIABLE(dead6_cnt, 3);
- SAVE_VARIABLE(evac_rope_id, 4);
- }
- void Created( GameObject * obj )
- {
- dead6_cnt = 0;
- evac_waypath_id = 0;
- evac_helicopter_id = 0;
- evac_rope_id = 0;
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if (type == M07_DEAD6_EVAC) //SAM sites captured, evac DEAD6 and Sydney
- {
- char param1[10];
- sprintf(param1, "%d", param);
- Vector3 evacPosition = Commands->Get_Position ( obj );
- float evacFacing = Commands->Get_Facing ( obj );
- GameObject *troopBone = Commands->Create_Object("Saveable_Invisible_Object", evacPosition );
- Commands->Set_Model ( troopBone, "XG_EV5_troopBN" );
- Commands->Set_Facing ( troopBone, evacFacing );
- Commands->Attach_Script(troopBone, "M07_Inn_Evac_Climb", param1);
-
- dead6_cnt++;
- if(dead6_cnt == 4)
- {
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100658), M07_EVAC_INN, 1, 0.0f);
- }
- if(dead6_cnt == 5)
- {
- // This is Resistance Radio. Nod SSM deployment confirmed. All available personnel to the park.\n
- const char *conv_name = ("M07_CON017");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(STAR, conv_id, false, true);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 300703);
- Commands->Monitor_Conversation (obj, conv_id);
-
-
- }
- }
- if (type == M07_EVAC_INN) //SAM sites captured, evac DEAD6 and Sydney
- {
- Vector3 evacPosition = Commands->Get_Position ( obj );
- float evacFacing = Commands->Get_Facing ( obj );
- GameObject *evacWaypath = Commands->Create_Object("Saveable_Invisible_Object", evacPosition );
- Commands->Attach_Script(evacWaypath, "M07_Inn_Evac_Trajectory", "");
- Commands->Set_Model ( evacWaypath, "XG_EV5_Path" );
- Commands->Set_Facing ( evacWaypath, evacFacing );
- Commands->Set_Animation ( evacWaypath, "XG_EV5_Path.XG_EV5_PathA", false );
- Commands->Start_Timer (obj, this, 130.0f/30.0f, LOWER_ROPE);
- evac_waypath_id = Commands->Get_ID(evacWaypath);
-
- GameObject *evacChopper = Commands->Create_Object_At_Bone( evacWaypath, "GDI_Transport_Helicopter_Flyover", "BN_Trajectory" );
- Commands->Attach_Script(evacChopper, "M07_Inn_Evac_Helicopter", "");
- Commands->Set_Animation ( evacChopper, "v_GDI_trnspt.XG_EV5_trnsA", false );
- Commands->Attach_To_Object_Bone( evacChopper, evacWaypath, "BN_Trajectory" );
- evac_helicopter_id = Commands->Get_ID ( evacChopper );
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if (action_id == 300703 && (reason == ACTION_COMPLETE_CONVERSATION_ENDED || reason == ACTION_COMPLETE_CONVERSATION_INTERRUPTED))
- {
- // Destroy Artillery Piece Objective
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 703, 3, 0.0f);
- Commands->Start_Timer (obj, this, 3.0f, CHINOOK_OUT);
-
- Commands->Start_Timer(obj, this, 10.0f, DESTROY_SYDNEY);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id )
- {
- ActionParamsStruct params;
- if(timer_id == DESTROY_SYDNEY)
- {
- // Once GDI evac has arrived destroy Sydney and DEAD-6 to give appearance of liftoff
- Commands->Destroy_Object(DEADEYE);
- Commands->Destroy_Object(GUNNER);
- Commands->Destroy_Object(PATCH);
- Commands->Destroy_Object(SYDNEY);
-
- // Commands->Start_Timer(obj, this, 10.0f, DROP_DEAD6_INN);
- }
- if(timer_id == LOWER_ROPE)
- {
- Vector3 evacPosition = Commands->Get_Position ( obj );
- float evacFacing = Commands->Get_Facing ( obj );
- GameObject * evacRope = Commands->Create_Object("Saveable_Invisible_Object", evacPosition );
- Commands->Attach_Script(evacRope, "M07_Inn_Evac_Rope", "");
- Commands->Set_Model ( evacRope, "XG_EV5_rope" );
- Commands->Set_Facing ( evacRope, evacFacing );
- Commands->Set_Animation ( evacRope, "XG_EV5_rope.XG_EV5_ropeA", false );
- evac_rope_id = Commands->Get_ID ( evacRope );
- }
- if(timer_id == CHINOOK_OUT)
- {
- GameObject * evacChopper = Commands->Find_Object ( evac_helicopter_id );
- GameObject * evacWaypath = Commands->Find_Object ( evac_waypath_id );
- GameObject * evacRope = Commands->Find_Object ( evac_rope_id );
- if (evacChopper != NULL)
- {
- Commands->Send_Custom_Event ( obj, evacChopper, M07_INN_HELICOPTER_OUT, 1, 0 );
- }
- if (evacWaypath != NULL)
- {
- Commands->Send_Custom_Event ( obj, evacWaypath, M07_INN_HELICOPTER_OUT, 1, 0 );
- }
- if (evacRope != NULL)
- {
- Commands->Send_Custom_Event ( obj, evacRope, M07_INN_HELICOPTER_OUT, 1, 0 );
- }
- // Objective accomplished for rescuing Sydney
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 701, 1, 0.0f);
- // Objective accomplished for protecting team
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 709, 1, 1.0f);
- }
-
- }
-
- };
- DECLARE_SCRIPT(M07_Inn_Evac_Climb, "Dead6_ID=0:int")
- {
- void Created( GameObject * obj )
- {
- int dead6_id = Get_Int_Parameter("Dead6_ID");
- GameObject * dead6 = Commands->Find_Object(dead6_id);
- Commands->Attach_Script(dead6, "M07_Climb_Rope", "");
- Commands->Attach_To_Object_Bone(dead6, obj, "Troop_L" );
- Commands->Set_Animation ( obj, "XG_EV5_troopBN.XG_EV5_troopBN", false );
- }
- void Animation_Complete(GameObject * obj, const char *anim)
- {
- if (stricmp(anim, "XG_EV5_troopBN.XG_EV5_troopBN") == 0)
- {
- Commands->Destroy_Object ( obj );
- }
- }
- };
- DECLARE_SCRIPT(M07_Climb_Rope, "")
- {
- enum{CLIMB_ROPE};
-
- void Created( GameObject * obj )
- {
- ActionParamsStruct params;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, CLIMB_ROPE );
- params.Set_Animation ("S_A_Human.XG_EV5_Troop", false);
- // params.Set_Animation ("S_A_HUMAN.H_A_A0F0", true);
- Commands->Action_Play_Animation (obj, params);
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if(action_id == CLIMB_ROPE && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Destroy_Object(obj);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Inn_Evac_Rope, "")
- {
- void Animation_Complete(GameObject * obj, const char *anim)
- {
- if (stricmp(anim, "XG_EV5_rope.XG_EV5_ropeA") == 0)
- {
- Commands->Set_Animation ( obj, "XG_EV5_rope.XG_EV5_ropeL", true );
- }
- else if (stricmp(anim, "XG_EV5_rope.XG_EV5_ropeZ") == 0)
- {
- Commands->Destroy_Object ( obj );
- }
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- switch (type)
- {
- case M07_INN_HELICOPTER_OUT:
- {
- Commands->Set_Animation ( obj, "XG_EV5_rope.XG_EV5_ropeZ", false );
- }
- break;
- }
- }
- };
- DECLARE_SCRIPT(M07_Inn_Evac_Trajectory, "")
- {
- void Animation_Complete(GameObject * obj, const char *anim)
- {
- if (stricmp(anim, "XG_EV5_Path.XG_EV5_PathA") == 0)
- {
- Commands->Set_Animation ( obj, "XG_EV5_Path.XG_EV5_PathL", true );
- }
- else if (stricmp(anim, "XG_EV5_Path.XG_EV5_PathZ") == 0)
- {
- Commands->Destroy_Object ( obj );
- }
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- switch (type)
- {
- case M07_INN_HELICOPTER_OUT:
- {
- Commands->Set_Animation ( obj, "XG_EV5_Path.XG_EV5_PathZ", false );
- }
- break;
- }
- }
- };
- DECLARE_SCRIPT(M07_Inn_Evac_Helicopter, "")
- {
- void Created( GameObject * obj )
- {
- Commands->Enable_Hibernation( obj, false );
- Commands->Disable_Physical_Collisions ( obj );
- Commands->Send_Custom_Event ( obj, obj, M07_INN_HELO_COLLISIONS, 1, 3.0F );
- }
- void Animation_Complete(GameObject * obj, const char *anim)
- {
- if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsA") == 0)
- {
- Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsL", true );
- Commands->Enable_Collisions ( obj );
-
- }
- else if (stricmp(anim, "v_GDI_trnspt.XG_EV5_trnsz") == 0)
- {
- Commands->Destroy_Object ( obj );
- }
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- switch (type)
- {
- case M07_INN_HELICOPTER_OUT:
- {
- Commands->Disable_Physical_Collisions ( obj );
- Commands->Set_Animation ( obj, "v_GDI_trnspt.XG_EV5_trnsz", false );
- }
- break;
- case M07_INN_HELO_COLLISIONS:
- {
- Commands->Enable_Collisions ( obj );
- }
- break;
-
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(Commands->Get_Health(obj) < 10.0f)
- {
- Commands->Set_Health(obj, 10.0f);
- }
- if(Commands->Get_Health(obj) < (.3 * Commands->Get_Max_Health(obj)))
- {
- Commands->Apply_Damage( obj, -10000.0f, "STEEL", NULL );
- }
- }
- };
- DECLARE_SCRIPT(M07_Deadeye_Nod_Chinook, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( apc_id, 1 );
- }
- void Created (GameObject * obj)
- {
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- if(Commands->Get_Health(obj) < 10.0f)
- {
- Commands->Set_Health(obj, 10.0f);
- }
- if(Commands->Get_Health(obj) < (.3 * Commands->Get_Max_Health(obj)))
- {
- Commands->Apply_Damage( obj, -10000.0f, "STEEL", NULL );
- }
- }
- };
- DECLARE_SCRIPT(M07_Alley_Vehicle, "Waypath_ID=0:int")
- {
- bool attacking;
- int waypath_id;
- bool active;
-
- enum{ATTACK_OVER, ATTACKING, WAYPATH};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- SAVE_VARIABLE( active, 2 );
- SAVE_VARIABLE( waypath_id, 3 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Enemy_Seen( obj, true);
- attacking = true;
- active = false;
- waypath_id = Get_Int_Parameter("Waypath_ID");
- }
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- ActionParamsStruct params;
- if ( type == M07_CUSTOM_ACTIVATE )
- {
- attacking = false;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), 1.0f, 1.5f );
- params.WaypathID = waypath_id;
- Commands->Action_Attack( obj, params );
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- ActionParamsStruct params;
-
- if(action_id == WAYPATH && reason == ACTION_COMPLETE_NORMAL)
- {
- attacking = false;
- }
-
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!active)
- {
- active = true;
- Commands->Send_Custom_Event (obj, obj, M07_CUSTOM_ACTIVATE, 0.0f);
- }
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), 0.0f, 1.5f );
- params.Set_Attack (enemy, 250.0f, 0.0f, 0);
- params.WaypathID = waypath_id;
- Commands->Modify_Action (obj, WAYPATH, params);
- Commands->Start_Timer (obj, this, 5.0f, ATTACK_OVER);
- }
- }
- void Damaged( GameObject * obj, GameObject * damager, float amount )
- {
- ActionParamsStruct params;
- if(!active)
- {
- active = true;
- Commands->Send_Custom_Event (obj, obj, M07_CUSTOM_ACTIVATE, 0.0f);
- }
- if(!attacking && (Commands->Get_Player_Type(damager) != SCRIPT_PLAYERTYPE_NOD))
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), 0.0f, 1.5f );
- params.Set_Attack (damager, 250.0f, 0.0f, 0);
- params.WaypathID = waypath_id;
- Commands->Modify_Action (obj, WAYPATH, params);
- Commands->Start_Timer (obj, this, 5.0f, ATTACK_OVER);
- }
- }
- void Timer_Expired(GameObject * obj, int timer_id )
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), 1.0f, 1.5f );
- params.WaypathID = waypath_id;
- Commands->Modify_Action (obj, WAYPATH, params);
- }
-
- }
- };
- DECLARE_SCRIPT(M07_Custom_Activate, "Object1_ID=0:int, Object2_ID=0:int, Object3_ID=0:int,")
- {
-
- bool already_entered;
-
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
-
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ((Commands->Is_A_Star(enterer)) && (!already_entered))
- {
- already_entered = true;
- int object1_id = Get_Int_Parameter("Object1_ID");
- int object2_id = Get_Int_Parameter("Object2_ID");
- int object3_id = Get_Int_Parameter("Object3_ID");
- if(object1_id != 0)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(object1_id), M07_CUSTOM_ACTIVATE, 1, 0.0f);
- }
- if(object2_id != 0)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(object2_id), M07_CUSTOM_ACTIVATE, 1, 0.0f);
- }
- if(object3_id != 0)
- {
- Commands->Send_Custom_Event (obj, Commands->Find_Object(object3_id), M07_CUSTOM_ACTIVATE, 1, 0.0f);
- }
-
- }
- }
- };
- DECLARE_SCRIPT(M07_Bridge_Overlook_Apache, "")
- {
- bool attacking;
- enum{WAYPATH, INN_PATROL, ATTACK_OVER};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( attacking, 1 );
- }
- void Created (GameObject * obj)
- {
- ActionParamsStruct params;
- attacking = false;
- Commands->Disable_Physical_Collisions(obj);
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, WAYPATH );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 109145;
- Commands->Action_Goto( obj, params );
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- ActionParamsStruct params;
- if (action_id == WAYPATH && reason == ACTION_COMPLETE_NORMAL)
- {
- Commands->Enable_Enemy_Seen(obj, true);
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, INN_PATROL );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.WaypathID = 109151;
- Commands->Action_Attack( obj, params );
- }
- }
- void Enemy_Seen(GameObject * obj, GameObject *enemy )
- {
- ActionParamsStruct params;
- if(!attacking)
- {
- attacking = true;
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, INN_PATROL );
- params.Set_Movement( Vector3(0,0,0), RUN, 1.5f );
- params.Set_Attack (enemy, 250.0f, 0.0f, 1);
- params.WaypathID = 109151;
- Commands->Modify_Action (obj, INN_PATROL, params);
- Commands->Start_Timer(obj, this, 6.0f, ATTACK_OVER);
- }
- }
-
- void Timer_Expired (GameObject* obj, int timer_id)
- {
- ActionParamsStruct params;
- if(timer_id == ATTACK_OVER)
- {
- attacking = false;
- }
- }
-
- };
- DECLARE_SCRIPT(M07_SSM_Unit, "")
- {
-
- enum{GO_STAR};
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- Commands->Enable_Hibernation(obj, false);
- Commands->Set_Innate_Aggressiveness(obj, 1.0f );
- Commands->Set_Innate_Take_Cover_Probability(obj, 0.0f );
- ActionParamsStruct params;
- params.Set_Basic(this, INNATE_PRIORITY_ENEMY_SEEN - 5, GO_STAR);
- params.Set_Movement(STAR, RUN, 1.0f);
- Commands->Action_Goto(obj, params);
- }
- void Sound_Heard(GameObject * obj, const CombatSound &sound)
- {
- ActionParamsStruct params;
- const char * preset_name = Commands->Get_Preset_Name( obj );
- if (sound.Type == M07_SSM_DAMAGED && ( ::strncmp( "Nod_Engineer_0", preset_name, ::strlen( "Nod_Engineer_0" ) ) == 0 ))
- {
- params.Set_Basic( this, INNATE_PRIORITY_ENEMY_SEEN + 5, 100 );
- params.Set_Movement( Vector3(0,0,0), RUN, 5.5f );
- params.Set_Attack (sound.Creator, 250.0f, 0.0f, 0);
- params.AttackCheckBlocked = false;
- Commands->Action_Attack( obj, params );
- }
- if (sound.Type == M07_SSM_FIXED && ( ::strncmp( "Nod_Engineer_0", preset_name, ::strlen( "Nod_Engineer_0" ) ) == 0 ))
- {
- Commands->Action_Reset(obj, INNATE_PRIORITY_ENEMY_SEEN + 5);
- }
- }
- };
- DECLARE_SCRIPT(M07_Obelisk_Unit, "")
- {
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( poked, 1 );
- }
- void Created(GameObject * obj)
- {
- Commands->Innate_Disable(obj);
- }
- void Custom (GameObject * obj, int type, int param, GameObject * sender)
- {
- if(type == M07_CUSTOM_ACTIVATE)
- {
- Commands->Innate_Enable(obj);
- }
- }
- };
- DECLARE_SCRIPT (M07_Park_Stealth_Tank, "")
- {
- float health;
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( health, 8 );
- }
- void Created(GameObject * obj)
- {
- health = Commands->Get_Health(obj);
- }
- void Damaged(GameObject * obj, GameObject * damager, float amount)
- {
- if(health > (.2 * Commands->Get_Max_Health(obj)))
- {
- float damage = health - Commands->Get_Health(obj);
- damage *= 0.5f;
- health -= damage;
- Commands->Set_Health(obj, health);
- }
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- // Defeat Stealth Tank.
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 707, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_SSM_Crate, "")
- {
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- // SAVE_VARIABLE( destroy_stockpile, 1 );
- }
- void Created (GameObject * obj)
- {
-
- }
- void Killed (GameObject * obj, GameObject * killer)
- {
- Commands->Create_Explosion("Explosion_Rocket_SSM", Commands->Get_Position(obj));
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100781), M07_SSM_CRATE_KILLED, 1, 0.0f);
- }
- };
- DECLARE_SCRIPT(M07_DataDisc_01_DLS, "")//
- {
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
- {
- // Reveal Stealth Tank
- Commands->Reveal_Encyclopedia_Vehicle(33);
- }
- }
- };
- DECLARE_SCRIPT(M07_DataDisc_02_DLS, "")//
- {
- void Custom( GameObject * obj, int type, int param, GameObject * sender )
- {
- if ( type == CUSTOM_EVENT_POWERUP_GRANTED )
- {
- // Reveal Stealth Soldier
- Commands->Reveal_Encyclopedia_Character(47);
- }
- }
- };
- DECLARE_SCRIPT(M07_Hotwire_Help, "")
- {
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
-
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ((Commands->Is_A_Star(enterer)) && (!already_entered))
- {
- already_entered = true;
-
- // Hotwire
- if(Commands->Find_Object(100658))
- {
- // Hotwire here, I need help! Now! Anyone!?
- const char *conv_name = ("M07_CON028");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 100658);
-
- }
-
- }
- }
-
- };
- DECLARE_SCRIPT(M07_Hotwire_Dead, "")
- {
- bool already_entered;
-
- // Register variables to be Auto-Saved
- // All variables must have a unique ID, less than 256, that never changes
- REGISTER_VARIABLES()
- {
- SAVE_VARIABLE( already_entered, 1 );
- }
- void Created (GameObject * obj)
- {
- already_entered = false;
-
- }
- void Entered (GameObject * obj, GameObject * enterer)
- {
- if ((Commands->Is_A_Star(enterer)) && (!already_entered))
- {
- already_entered = true;
-
- // Hotwire
- if(Commands->Find_Object(100658))
- {
- // This is Hotwire, I can't hold this position! Requesting - oh great! <gunfire and static>
- const char *conv_name = ("M07_CON029");
- int conv_id = Commands->Create_Conversation (conv_name, 100.0f, 200.0f, false);
- Commands->Join_Conversation(NULL, conv_id, false, true);
- Commands->Start_Conversation (conv_id, 100658);
- Commands->Monitor_Conversation (obj, conv_id);
- }
-
- }
- }
- void Action_Complete(GameObject * obj, int action_id, ActionCompleteReason reason)
- {
- if(reason == ACTION_COMPLETE_CONVERSATION_ENDED)
- {
- if(action_id == 100658)
- {
- // Hotwire Killed
- Commands->Set_HUD_Help_Text ( IDS_M05DSGN_DSGN0174I1DSGN_TXT, TEXT_COLOR_OBJECTIVE_PRIMARY );
- // Protect Team Members
- Commands->Send_Custom_Event(obj, Commands->Find_Object(100657), 709, 2, 0.0f);
-
- }
- }
- }
- };
|