int eventBackstab(object backstabber, object target) { object env; float tmp; int suprise; object *weapons; int numberOfWeapons; int numberOfStabs; int i; if(!backstabber || !(env = environment(backstabber))) return 0; if(!target || !present(target, env)) { backstabber->eventPrint("Your hapless victim is no longer present."); return 1; } tmp = backstabber->GetSkillLevel("stealth")*1.5; tmp += backstabber->GetStatLevel("charisma")/2.0; tmp += backstabber->GetStatLevel("luck")/3.0; tmp += backstabber->GetMobility()/3.0; tmp -= target->GetStatLevel("luck")/3.0; tmp -= target->GetStatLevel("wisdom")/3.0; tmp -= target->GetMobility()/5.0; tmp *= 1.0; if(tmp < 1.0) tmp = 1.0; suprise = to_int(tmp); backstabber->AddSkillPoints("stealth", to_int(suprise * 3.0)); backstabber->AddStaminaPoints(-(5 + random(5))); moral_act(backstabber, target, -30); if(suprise < random(100) || !present(target, environment(backstabber))) { backstabber->eventPrint("%^RED%^" + target->GetName() + " evades your poorly executed backstab.%^RESET%^"); target->eventPrint("%^RED%^You easily dodge " + possessive_noun(backstabber) + " attempted backstab.%^RESET%^"); environment(backstabber)->eventPrint("%^RED%^" + target->GetName() + " dodges " + possessive_noun(backstabber) + " attempted backstab.%^RESET%^", ({backstabber, target}));
switch(Count){ case 10: if(stank) message("smell", "The "+Limb+" rapidly corrodes.", environment()); SetShort("the corroding remnant of a " + Limb); break; case 20: if(stank) message("smell", "An acrid chemical odor fills the area.", environment()); SetShort("some corroded chemicals"); break; case 30: CallOut = -1; Destruct(); return 0; } Count++; return Count; } void SetLimb(string limb, string owner, string race){ SetKeyName(limb); SetId( ({ "limb", Limb = limb }) ); Owner = owner; Race = race; Count = 1; SetShort("a melting " + possessive_noun(Race) + " " +Limb); SetLong("This limb is rapidly corroding into its component chemicals."); }