void spawnstate(dynent *d) // reset player state not persistent accross spawns { resetmovement(d); d->vel.x = d->vel.y = d->vel.z = 0; d->onfloor = false; d->timeinair = 0; d->health = 100; d->armour = 50; d->armourtype = A_BLUE; d->quadmillis = 0; d->lastattackgun = d->gunselect = GUN_SG; d->gunwait = 0; d->attacking = false; d->lastaction = 0; loopi(NUMGUNS) d->ammo[i] = 0; d->ammo[GUN_FIST] = 1; if(m_noitems) { d->gunselect = GUN_RIFLE; d->armour = 0; if(m_noitemsrail) { d->health = 1; d->ammo[GUN_RIFLE] = 100; } else { if(gamemode==12) { d->gunselect = GUN_FIST; return; }; // eihrul's secret "instafist" mode d->health = 256; if(m_tarena) { int gun1 = rnd(4)+1; baseammo(d->gunselect = gun1); for(;;) { int gun2 = rnd(4)+1; if(gun1!=gun2) { baseammo(gun2); break; }; }; } else if(m_arena) // insta arena { d->ammo[GUN_RIFLE] = 100; } else // efficiency { loopi(4) baseammo(i+1); d->gunselect = GUN_CG; }; d->ammo[GUN_CG] /= 2; }; } else { d->ammo[GUN_SG] = 5; }; };
// reset player state not persistent accross spawns static void spawnstate(dynent *d) { resetmovement(d); d->vel = zero; d->onfloor = false; d->timeinair = 0; d->health = 100; d->armour = 50; d->armourtype = A_BLUE; d->quadmillis = 0; d->lastattackgun = d->gunselect = GUN_SG; d->gunwait = 0; d->attacking = false; d->lastaction = 0; loopi(NUMGUNS) d->ammo[i] = 0; d->ammo[GUN_FIST] = 1; if (m_noitems) { d->gunselect = GUN_RIFLE; d->armour = 0; if (m_noitemsrail) { d->health = 1; d->ammo[GUN_RIFLE] = 100; } else { if (mode()==12) { d->gunselect = GUN_FIST; return; } // eihrul's secret "instafist" mode d->health = 256; if (m_tarena) { int gun1 = rnd(4)+1; baseammo(d->gunselect = gun1); for (;;) { int gun2 = rnd(4)+1; if (gun1!=gun2) { baseammo(gun2); break; } } } else if (m_arena) // insta arena d->ammo[GUN_RIFLE] = 100; else { loopi(4) baseammo(i+1); d->gunselect = GUN_CG; } d->ammo[GUN_CG] /= 2; } } else d->ammo[GUN_SG] = 5; }
/// configure spawn settings (weapons, ammo, health...) depending on game mode void spawnstate(int gamemode) { if(m_demo) { gunselect = GUN_FIST; backupweapon = GUN_FIST; } else if(m_insta) { armour = 0; health = 1; gunselect = GUN_RIFLE; ammo[GUN_RIFLE] = 100; backupweapon = GUN_FIST; } else if(m_regencapture) { armourtype = A_BLUE; armour = 25; gunselect = GUN_PISTOL; ammo[GUN_PISTOL] = 40; ammo[GUN_GL] = 1; backupweapon = GUN_FIST; } else if(m_tactics) { armourtype = A_GREEN; armour = 100; ammo[GUN_PISTOL] = 40; backupweapon = GUN_FIST; int spawngun1 = inexor::util::random::rnd(5)+1, spawngun2; gunselect = spawngun1; baseammo(spawngun1, m_noitems ? 2 : 1); do spawngun2 = inexor::util::random::rnd(5)+1; while(spawngun1==spawngun2); baseammo(spawngun2, m_noitems ? 2 : 1); if(m_noitems) ammo[GUN_GL] += 1; } else if(m_efficiency) { armourtype = A_GREEN; armour = 100; loopi(5) baseammo(i+1); gunselect = GUN_CG; ammo[GUN_CG] /= 2; backupweapon = GUN_FIST; } else if(m_ctf || m_collect) { armourtype = A_BLUE; armour = 50; ammo[GUN_PISTOL] = 40; ammo[GUN_GL] = 1; backupweapon = GUN_FIST; } else if(m_bomb) { health = 1; armourtype = A_GREEN; armour = 0; gunselect = GUN_BOMB; backupweapon = GUN_BOMB; } else if(m_hideandseek) { health = 100; armour = 0; gunselect = GUN_RL; ammo[GUN_RL] = 10; ammo[GUN_PISTOL] = 0; ammo[GUN_GL] = 0; backupweapon = GUN_FIST; } else { armourtype = A_BLUE; armour = 25; ammo[GUN_PISTOL] = 40; ammo[GUN_GL] = 1; backupweapon = GUN_FIST; } }