Denna fil förklarar hur man gör vapen. TIPS: Några färdiga vapen, som det är fritt fram att klona, finns i /stdobj/vapen/. Det finns två sätt att göra ett vapen: 1) Ge vapnet en egen fil. Filen ska börja med raden inherit "/obj/weapon"; D{refter skriver du funktionen create() där du anropar nedanstående funktioner för att ange vilka egenskaper ditt vapen har. Fr}n din egen create() måste du anropa den create() som definieras i /obj/weapon.c! Skriv: ::create(); 2) Klona /obj/weapon.c och anropa funktionerna nedan innan vapnet placeras i muddet. Exempel: object vapen; vapen = clone_object("/obj/weapon"); vapen->set_name( ({"kniven","kniv","morakniven","morakniv"}) ); vapen->set_short("en morakniv"); ...osv transfer(vapen,this_object()); *** FUNKTIONER *** set_name(string namnet, string namn) set_name(string *allanamn) set_short(string sh) set_long(string ldesc) Se /doc/build/namn. set_class(int c) Sätt vapenklassen, se /doc/build/vapen/tabell. set_weight(int w) Sätter vikten på vapnet, se /doc/build/vapen/tabell. set_value(int v) Sätt värdet på vapnet, se /doc/build/vapen/tabell. set_hit_func(object ob) Ange ett objekt ob där funktionen weapon_hit() skall anropas varje gång som vapnet slår mot någon. Argumentet till weapon_hit är målet fÖr attacken (typ object) och det värde som returneras läggs till vapnets vapenklass för detta slag. Om strängen "miss" returneras missar vapnet garanterat. OBS! Denna funktion behöver bara anropas om du arbetar med en klon av /obj/weapon. I din vapenfil skriver du i stället en funktion status hit(object attacker), som gör det weapon_hit() skulle ha gjort. set_wield_func(ob) Ange ett objekt ob där funktionen wield() skall anropas varje gång som någon försöker fatta vapnet. Argumentet till wield är vapnet. Om wield() returnerar 0 så kan vapnet inte fattas, om värdet är 1 går det bra. OBS! Denna funktion ska bara anropas om du arbetar med en klon av /obj/weapon. I din vapenfil skriver du i stället en funktion wield(), men kolla först vad den ursprungliga wield() innehåller, för den sätts i så fall ur spel. set_use_msg(string msg) Sätt texten som visa då vapnet har fattats. (normalt "fattad"/"fattat") set_vapentyp(string typ) Sätter typen på vapnet. Det finns bara ett begränsat antal möjliga typer. Se filen /doc/build/vapen/typer. set_read(string str) Sätt en text om man kan läsa vapnet. set_magic() Om denna funktion anropas blir flaggan som talar om att vapnet är magiskt satt. set_wield_func och set_hit_func sätter flaggan automatiskt. Ett magiskt vapen skall inte kunna påverkas av vapenslipare etc. EXEMPEL: /* * En nissedödare. * En oskyldig liten dolk som sprättar upp nissar. */ nissedödaren = clone_object("obj/weapon"); nissedödaren -> set_name(({ "dolken","dolk","nissedödaren" })); nissedödaren -> set_short("en liten dolk"); nissedödaren -> set_long("En liten tio centimeter lång dolk. Något står inristat i bladet.\n"); nissedödaren -> set_read("Du kan utläsa ordet \"Nissedödaren\" på bladet.\n"); nissedödaren -> set_vapentyp("kniv"); nissedödaren -> set_class(3); nissedödaren -> set_weight(1); nissedödaren -> set_value(6); nissedödaren -> set_hit_func(this_object()); . . . int weapon_hit(object attacker) { if((string)attacker->query_namnet()=="Nisse"){ write("Du känner hur dolken vibrerar av glädje att få skära i nissen.\n"); return 20; } return 0; }