// **** OTHER SUBS AND VARS TO MAKE THE BOOTHER WORK (Only for BOOTHER5) (OTHER FILES) **** // For the DEF.CON file (DEF.CON) define BOOTHER5 65 // For the names.h file (names.h) #define BOOTHER5 65 // For the USER.CON file (USER.CON) definequote 152 THIS IS A PLACE HOLDER // **** Double Ammo (Also needs) **** // OTHER SUBS AND VARS TO MAKE THE BOOTHER WORK (GAME.CON) gamevar Q_OUT 0 1 // output for messages // **** Double Ammo (Specific) (GAME.CON) **** gamevar ACTOR_WORTH_SHRINK 999 2 // used to set the actor's amount. Can't be 0. It is possible that one ammo will turn to 0 gamevar ACTOR_WORTH_DARKEXP 999 2 state IGETAMMOBOOTHER globalsound DUKE_GET palfrom 16 0 32 ifvare ACTOR_WORTH_SHRINK 0 // if BOTH are used-up then delete the actor this acts like an "AND" gate it is possible that ifvare ACTOR_WORTH_DARKEXP 0 // one could be 0 but that would kill the actor killit ends state IGETAMMOBOOTHER_RESP globalsound DUKE_GET palfrom 16 0 32 ifrespawn { move RESPAWN_ACTOR_FLAG spawn RESPAWNMARKERRED cstat 32768 } else ifvare ACTOR_WORTH_SHRINK 0 ifvare ACTOR_WORTH_DARKEXP 0 killit ends // gamevars for the BOOTHER_MATH state (GAME.CON) gamevar SHRINK_STAT 0 0 // used to report what the player has gamevar SHRINK_AMMO_ADDIT 0 0 // used to add player number and ammo in the sprite gamevar SHRINK_AMMO_TRANS 0 0 // used for unused shrinker to transfer to dark exp gamevar DARKEXP_STAT 0 0 gamevar DARKEXP_AMMO_ADDIT 0 0 gamevar DARKEXP_AMMO_TRANS 0 0 // used for unused dark exp to transfer to shrinker gamevar Q_OUT_SHRINK 0 0 // used to output ammo gain gamevar Q_OUT_DARKEXP 0 0 state BOOTHER_MATH getplayer[THISACTOR].ammo_amount 6 SHRINK_AMMO_ADDIT // load what player has addvarvar SHRINK_AMMO_ADDIT ACTOR_WORTH_SHRINK // add ammo amount to what player has (SHRINK.. + ..AMOUNT) getplayer[THISACTOR].ammo_amount 11 DARKEXP_AMMO_ADDIT addvarvar DARKEXP_AMMO_ADDIT ACTOR_WORTH_DARKEXP setplayer[THISACTOR].ammo_amount 6 SHRINK_AMMO_ADDIT // actual update ammo for player with new value setplayer[THISACTOR].ammo_amount 11 DARKEXP_AMMO_ADDIT setvarvar Q_OUT_SHRINK ACTOR_WORTH_SHRINK // TEXT: sets the output vars to what the actors are worth setvarvar Q_OUT_DARKEXP ACTOR_WORTH_DARKEXP getplayer[THISACTOR].ammo_amount 6 SHRINK_STAT // what does the player have now? ifvarg SHRINK_STAT MAXSHRINKERAMMO // if ammo over the max then... { subvar SHRINK_STAT MAXSHRINKERAMMO // figures out what the remaining ammo is. SHRINK_STAT is the over-max - max = left over or not used setvarvar DARKEXP_AMMO_TRANS SHRINK_STAT // puts the ramaining ammo into mem getplayer[THISACTOR].ammo_amount 11 DARKEXP_STAT // get what the player has addvarvar DARKEXP_AMMO_TRANS DARKEXP_STAT // adds what remaining ammo is to what player has setplayer[THISACTOR].ammo_amount 6 MAXSHRINKERAMMO // set to max - no over setplayer[THISACTOR].ammo_amount 11 DARKEXP_AMMO_TRANS // give player the remaining ammo getplayer[THISACTOR].ammo_amount 11 DARKEXP_STAT // get what the player has now subvarvar Q_OUT_SHRINK SHRINK_STAT // TEXT: shrinker ammo (set above) - shrinker left over = used addvarvar Q_OUT_DARKEXP SHRINK_STAT // TEXT: dark exp ammo (ACTOR_WORTH_DARKEXP) + overflow (left over from shrinker) ifvarg DARKEXP_STAT MAXGROWAMMO // What happens if the other ammo type is full from the transfer? { setplayer[THISACTOR].ammo_amount 11 MAXGROWAMMO // This stops the program from repeating another transfer with the code below for the DARK EXPANDER subvar DARKEXP_AMMO_TRANS MAXGROWAMMO // figures out what the transfered remaining amount is (was not used). setvarvar ACTOR_WORTH_SHRINK DARKEXP_AMMO_TRANS // set the actor's new amount to the remaining ammo or what was not used subvarvar Q_OUT_DARKEXP DARKEXP_AMMO_TRANS // TEXT: (dark exp ammo + overflow) - what was not used = used } else setvar ACTOR_WORTH_SHRINK 0 // if the DARK EXPANDER does not overflow then Duke used all of this ammo } else setvar ACTOR_WORTH_SHRINK 0 // if the SHRINKER does not overflow then Duke used all of this ammo getplayer[THISACTOR].ammo_amount 11 DARKEXP_STAT ifvarg DARKEXP_STAT MAXGROWAMMO { subvar DARKEXP_STAT MAXGROWAMMO setvarvar SHRINK_AMMO_TRANS DARKEXP_STAT getplayer[THISACTOR].ammo_amount 6 SHRINK_STAT addvarvar SHRINK_AMMO_TRANS SHRINK_STAT setplayer[THISACTOR].ammo_amount 6 SHRINK_AMMO_TRANS setplayer[THISACTOR].ammo_amount 11 MAXGROWAMMO getplayer[THISACTOR].ammo_amount 6 SHRINK_STAT addvarvar Q_OUT_SHRINK DARKEXP_STAT subvarvar Q_OUT_DARKEXP DARKEXP_STAT ifvarg SHRINK_STAT MAXSHRINKERAMMO { setplayer[THISACTOR].ammo_amount 6 MAXSHRINKERAMMO subvar SHRINK_AMMO_TRANS MAXSHRINKERAMMO setvarvar ACTOR_WORTH_DARKEXP SHRINK_AMMO_TRANS subvarvar Q_OUT_SHRINK SHRINK_AMMO_TRANS } else setvar ACTOR_WORTH_DARKEXP 0 } else setvar ACTOR_WORTH_DARKEXP 0 ends // **** ACTOR CODE (GAME.CON) **** // There are 4 types of BOOTHERS // BOOTHERTO SHRINK +1, DARK +1, POOL EFFECT TOTAL +2 // BOOTHER5 SHRINK +5, DARK +5, POOL EFFECT TOTAL +10 // BOOTHER10 SHRINK +10, DARK +10, POOL EFFECT TOTAL +20 // BOOTHER20 SHRINK +20, DARK +20, POOL EFFECT TOTAL +40 // MY THING - the Doulbe Ammo Actor (BOOTHER) // This Actor Code is only for BOOTHER5 // code from Trooper Dan appendevent EVENT_SPAWN ifactor BOOTHER5 sizeat 32 32 endevent // code from Trooper Dan actor BOOTHER5 fall cstat 2048 // max bright ifmove RESPAWN_ACTOR_FLAG state respawnit else ifp pshrunk nullop else ifp palive ifpdistl RETRIEVEDISTANCE ifcount 6 ifcanseetarget { ifvare ACTOR_WORTH_SHRINK 999 // can't be zero at first like it is for the other ammo actors. setvar ACTOR_WORTH_SHRINK 5 // There is a chance one could be 0. If that happens then the actor would be set to 5 ifvare ACTOR_WORTH_DARKEXP 999 setvar ACTOR_WORTH_DARKEXP 5 setvar Q_OUT_SHRINK 0 // TEXT: clears the output text vars each time setvar Q_OUT_DARKEXP 0 getplayer[THISACTOR].ammo_amount 6 SHRINK_STAT // load player ammo into mem getplayer[THISACTOR].ammo_amount 11 DARKEXP_STAT ifvarl SHRINK_STAT MAXSHRINKERAMMO // if player has less than max { state BOOTHER_MATH redefinequote 152 ^11SHRINK CHARGE: +%d, DARK EXP CHARGE: +%d qsprintf 152 152 Q_OUT_SHRINK Q_OUT_DARKEXP quote 152 ifspawnedby BOOTHER5 state IGETAMMOBOOTHER_RESP else state IGETAMMOBOOTHER } else ifvarl DARKEXP_STAT MAXGROWAMMO { state BOOTHER_MATH redefinequote 152 ^11SHRINK CHARGE: +%d, DARK EXP CHARGE: +%d qsprintf 152 152 Q_OUT_SHRINK Q_OUT_DARKEXP quote 152 ifspawnedby BOOTHER5 state IGETAMMOBOOTHER_RESP else state IGETAMMOBOOTHER } } enda