/* cause */
#define NAME "@@query_name:$this_player()$@@"
#define TARG "@@query_name:$this_object()$@@"
#define OBJECTIVE "@@query_objective:$this_object()$@@"
status cause(string spell_type, mixed alt_type) {
string file, spell_name;
string immune;
string targ;
int i, spell_level, dam;
if(!spell_type) {
notify_fail("cause wounds, cause light wounds, cause minor wounds,\n"+
"cause medium wounds, cause serious wounds, cause critical wounds,\n"+
"cause major wounds, cause heavy wounds, cause blindness,\n"+
"cause deafness, cause disease.\n");
return 0;
}
sscanf(spell_type,"%s wounds %s", spell_type, targ);
sscanf(spell_type,"%s wounds", spell_type);
sscanf(spell_type,"%s %s", spell_type, targ);
if(!alt_type) alt_type = "healing_sphere";
immune = "darkness";
switch(spell_type) {
case "wounds":
spell_name = "Cause Wounds";
dam = 1 * (random(4)+1);
spell_level = 1;
break;
case "light":
spell_name = "Cause Light Wounds";
dam = 5 * (random(4)+1);
spell_level = 4;
break;
case "minor":
spell_name = "Cause Minor Wounds";
dam = 10 * (random(3)+1);
spell_level = 7;
break;
case "medium":
spell_name = "Cause Medium Wounds";
dam = 15 * (random(3)+1);
spell_level = 10;
break;
case "serious":
spell_name = "Cause Serious Wounds";
dam = 20 * (random(3)+1);
spell_level = 13;
break;
case "critical":
spell_name = "Cause Critical Wounds";
dam = 25 * (random(2)+1);
spell_level = 16;
break;
case "major":
spell_name = "Cause Major Wounds";
dam = 30 * (random(2)+1);
spell_level = 19;
break;
case "heavy":
spell_name = "Cause Heavy Wounds";
dam = 35 * (random(2)+1);
spell_level = 23;
break;
case "deafness":
spell_name = "Cause Deafness";
spell_level = 3;
file = "skills/obj/deaf";
dam = (objectp(alt_type))
? (int)alt_type->query_cast_level()
: (int)call_other(this_player(), "query_"+ alt_type);
immune = "disease";
break;
case "blindness":
spell_name = "Cause Blindness";
spell_level = 5;
file = "skills/obj/blind";
dam = (objectp(alt_type))
? (int)alt_type->query_cast_level()
: (int)call_other(this_player(), "query_"+ alt_type);
immune = "disease";
break;
case "disease":
spell_name = "Cause Disease";
spell_level = 7;
file = "skills/obj/disease";
dam = (objectp(alt_type))
? (int)alt_type->query_cast_level()
: (int)call_other(this_player(), "query_"+ alt_type);
immune = "disease";
break;
default:
notify_fail("cause wounds, cause light wounds, cause minor wounds,\n"+
"cause medium wounds, cause serious wounds, cause critical wounds,\n"+
"cause major wounds, cause heavy wounds, cause blindness,\n"+
"cause deafness, cause disease.\n");
return 0;
break;
}
this_player()->load_spell(({
"target", targ,
"name", spell_name,
"sphere", alt_type,
"cost", spell_level,
"level", spell_level,
"cast time", 1,
"spell object", file,
"damage", dam,
"msg caster", "You see wounds open up on "+ TARG +"!\n",
"msg target", "As "+ NAME +" touches you, wounds open up on your"+
" flesh.\n",
"msg room", "You see wounds open up on "+ TARG +" when "+ NAME
+" touches "+ OBJECTIVE +".\n",
"immune", immune,
}));
return 1;
}
/* native mode */
#include <move.h>