#include <lib.h> #include "include/clip.h" #include <vendor_types.h> inherit LIB_STORAGE; private int caliber, millimeter, MaxAmmo, ammo; private string pistoltype,ammotype; void create(){ ::create(); SetKeyName("magazine"); SetId(({"clip","magazine"})); SetAdjectives(({"ammunition","pistol"})); SetShort("a pistol ammunition clip"); SetLong("This is a slender, spring-loaded container for semiautomatic "+ "pistol ammunition."); SetMass(10); SetValue(1); SetVendorType(VT_TREASURE); } int CanReceive(object ob){ string *namen; namen=ob->GetId(); if(member_array("bullet",namen) == -1){ write("Only bullets fit into the magazine."); return 0; } if(ob->GetAmmoType() != this_object()->GetAmmoType() ){ write("That round is not the correct type for the magazine."); return 0; } if(ob->GetMillimeter() != this_object()->GetMillimeter() ){ write("That round is not the correct size for the magazine."); return 0; } if(ob->GetCaliber() != this_object()->GetCaliber() ){ write("That round is not the correct caliber for the magazine."); return 0; } if(ob->GetPistolType() != "auto" && ob->GetRifleType() != "auto"){ write("That round is not a semiautomatic round."); return 0; } if(ammo == MaxAmmo){ write("The magazine is filled to capacity."); return 0; } ammo++; return 1; } int CanRelease(object ob){ ammo--; return 1; } int MinusAmmo(int i) { ammo -= i; return 1; } int PlusAmmo(int i) { ammo += i; return 1; } int SetMaxAmmo(int i) { MaxAmmo=i; return 1; } int SetPistolType(string str) {pistoltype=str; return 1; } int SetAmmoType(string str) {ammotype=str; return 1; } int SetCaliber(int x) { caliber=x; return 1; } int SetMillimeter(int x){ millimeter=x; return 1; } int GetMillimeter() { return millimeter; } int GetCaliber() { return caliber; } string GetPistolType() { return pistoltype; } string GetAmmoType() { return ammotype; }