#include "include.h"
bool check_dispel( int dis_level, CHAR_DATA *victim, int sn);
void do_invoke_jackass args((CHAR_DATA *ch));
void do_invoke_jerle args((CHAR_DATA *ch));
void do_invoke_vasilis args((CHAR_DATA *ch));
void do_invoke_merth args((CHAR_DATA *ch));
void do_invoke_deomanix args((CHAR_DATA *ch));
void do_invoke_orduno args((CHAR_DATA *ch));
void do_invoke_dhayton args((CHAR_DATA *ch));
void do_invoke_merthairu args((CHAR_DATA *ch));
void do_invoke_ceial args ((CHAR_DATA *ch));
void do_invoke_detlef args ((CHAR_DATA *ch));
DECLARE_DO_FUN(do_ghost);
void do_brands( CHAR_DATA *ch, char *argument )
{
char arg1[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
CHAR_DATA *victim;
OBJ_DATA *obj;
OBJ_DATA *objj;
if (ch->level < 53 || IS_NPC(ch))
{
send_to_char("Huh?\n\r", ch);
return;
}
argument = one_argument( argument, arg1 );
if ( arg1[0] == '\0' )
{
send_to_char("Syntax: brands <char>\n\r", ch);
return;
}
if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
{
send_to_char( "They aren't playing.\n\r", ch );
return;
}
if (ch == victim)
{
send_to_char( "Trying to brand yourself?\n\r", ch );
return;
}
if ( (obj = get_eq_char(victim, WEAR_BRAND) ) != NULL )
{
send_to_char("That person already has a brand.\n\r", ch);
return;
}
if ( (obj = get_eq_char(ch, WEAR_BRAND) ) != NULL )
{
objj = create_object(obj->pIndexData, 0);
clone_object(obj, objj);
obj_to_char( objj, victim );
equip_char( victim, objj, WEAR_BRAND );
send_to_char("That person now has your brand.\n\r", ch);
send_to_char("You wince in agony as the hot metal brands you!\n\r", victim);
sprintf(buf,"AUTO: Branded by %s.\n\r", ch->name);
if (!IS_IMMORTAL(victim))
add_history(NULL,victim,buf);
return;
}
send_to_char("You don't have a brand yourself.\n\r", ch);
return;
}
void do_unbrands( CHAR_DATA *ch, char *argument )
{
char arg1[MAX_INPUT_LENGTH];
char buf[MAX_INPUT_LENGTH];
CHAR_DATA *victim;
OBJ_DATA *obj;
if (ch->level < 53 || IS_NPC(ch))
{
send_to_char("Huh?\n\r", ch);
return;
}
argument = one_argument( argument, arg1 );
if ( arg1[0] == '\0' )
{
send_to_char("Syntax: unbrand <char>\n\r", ch);
return;
}
if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
{
send_to_char( "They aren't playing.\n\r", ch );
return;
}
if (IS_NPC(victim))
{
send_to_char( "Trying to unbrand a mob?\n\r", ch );
return;
}
if (ch == victim)
{
send_to_char( "Trying to unbrand yourself?\n\r", ch );
return;
}
if ((obj = get_eq_char(victim, WEAR_BRAND)) == NULL)
{
send_to_char( "That person doesn't have a brand.\n\r", ch );
return;
}
unequip_char(victim, obj);
obj_from_char(obj);
extract_obj(obj);
send_to_char("You have unbranded that person.\n\r", ch);
send_to_char("Your brand is painfully removed.\n\r", victim);
sprintf(buf,"AUTO: Unbranded by %s.\n\r",ch->name);
if (!IS_IMMORTAL(victim))
add_history(NULL,victim,buf);
return;
}
void do_invoke( CHAR_DATA *ch, char *argument )
{
OBJ_DATA *obj;
obj = get_eq_char(ch, WEAR_BRAND);
if ((obj = get_eq_char(ch, WEAR_BRAND)) == NULL)
{
send_to_char( "You have no tattoo to invoke.\n\r", ch );
return;
}
if(ch->position==POS_SLEEPING) {
act("You can't do that while sleeping.",ch,0,0,TO_CHAR);
return;
}
if (obj->pIndexData->vnum == OBJ_VNUM_TATTOO_ASS)
{
do_invoke_jackass(ch);
}
if (obj->pIndexData->vnum == OBJ_VNUM_TATTOO_JERLE)
{
do_invoke_jerle(ch);
}
if (obj->pIndexData->vnum == OBJ_VNUM_TATTOO_VAS)
{
do_invoke_vasilis(ch);
}
if (obj->pIndexData->vnum == OBJ_VNUM_TATTOO_DEO)
{
do_invoke_deomanix(ch);
}
if (obj->pIndexData->vnum == 66 /*Orduno*/)
{
do_invoke_orduno(ch);
}
if (obj->pIndexData->vnum == 67 /*dhayton*/)
{
do_invoke_dhayton(ch);
}
if (obj->pIndexData->vnum == 57 /*detlef*/)
{
do_invoke_detlef(ch);
}
// if (obj->pIndexData->vnum == 4452 /*merthairu*/)
// {
// do_invoke_merthairu(ch);
// }
if (obj->pIndexData->vnum == 72 /*Ceial*/)
{
do_invoke_ceial(ch);
}
}
void do_invoke_dhayton(CHAR_DATA *ch)
{
AFFECT_DATA af;
OBJ_DATA *obj;
if (is_affected(ch,gsn_rage))
{
send_to_char("You are already filled with rage!\n\r",ch);
return;
}
obj = get_eq_char(ch, WEAR_BRAND);
act("$n's $p glows a dark crimson as $s eyes fill with rage!",ch,obj,0,TO_ROOM);
act("Your $p glows a dark crimson as you are filled with rage!",ch,obj,0,TO_CHAR);
ch->move /= 3;
init_affect(&af);
af.type = gsn_rage;
af.aftype = AFT_SKILL;
af.level = ch->level;
af.duration = 5;
af.modifier = 30;
af.bitvector = AFF_HASTE;
af.location = APPLY_HITROLL;
affect_to_char(ch,&af);
af.location = APPLY_DAMROLL;
affect_to_char(ch,&af);
af.location = APPLY_DEX;
af.modifier = 5;
affect_to_char(ch,&af);
af.location = APPLY_STR;
affect_to_char(ch,&af);
return;
}
void do_invoke_orduno(CHAR_DATA *ch)
{
OBJ_DATA *obj;
AFFECT_DATA af;
int num;
obj = get_eq_char(ch, WEAR_BRAND);
if (is_affected(ch,gsn_body_of_wood) || is_affected(ch,gsn_body_of_iron) || is_affected(ch,gsn_body_of_clay) || is_affected(ch,gsn_body_of_steel) || is_affected(ch,gsn_body_of_stone) || is_affected(ch,gsn_body_of_diamond))
{
act("Your $p begins to feel warm, but nothing happens.",ch,obj,0,TO_CHAR);
return;
}
act("Your $p begins to glow and all of a sudden grows red-hot wracking your body with spasms of pain.",ch,obj,0,TO_CHAR);
act("$n's $p begins to glow fiercly and all of a sudden $n begins to spasm in pain clutching their brand.",ch,obj,0,TO_ROOM);
init_affect(&af);
af.duration = ch->level / 4;
af.level = ch->level;
af.where = TO_AFFECTS;
af.aftype = AFT_SPELL;
af.modifier = 0;
af.bitvector = 0;
af.location = APPLY_NONE;
//for a random affect
num = number_range(1,6);
if (num == 1)
{
init_affect(&af);
af.type = gsn_body_of_wood;
af.aftype = AFT_SPELL;
send_to_char("As the pain fades you realize that your skin has become made of wood!\n\r",ch);
act("$n's skin slowly comes to more resemble wood then skin",ch,NULL,NULL,TO_ROOM);
}
if (num == 2)
{
init_affect(&af);
af.type = gsn_body_of_clay;
af.aftype = AFT_SPELL;
send_to_char("As the pain fades you realize that your skin has become made of clay!",ch);
act("$n's skin slowly comes to more resemble clay then skin",ch,NULL,NULL,TO_ROOM);
}
if (num == 3)
{
init_affect(&af);
af.type = gsn_body_of_iron;
af.aftype = AFT_SPELL;
send_to_char("As the pain fades you realize that your skin has become made of iron!",ch);
act("$n's skin slowly comes to more resemble iron then skin",ch,NULL,NULL,TO_ROOM);
}
if (num == 4)
{
init_affect(&af);
af.type = gsn_body_of_steel;
af.aftype = AFT_SPELL;
send_to_char("As the pain fades you realize that your skin has become made of steel!",ch);
act("$n's skin slowly comes to more resemble steel then skin",ch,NULL,NULL,TO_ROOM);
}
if (num == 5)
{
init_affect(&af);
af.type = gsn_body_of_stone;
af.aftype = AFT_SPELL;
send_to_char("As the pain fades you realize that your skin has become made of stone!",ch);
act("$n's skin slowly comes to more resemble stone then skin",ch,NULL,NULL,TO_ROOM);
}
if (num == 6)
{
init_affect(&af);
af.type = gsn_body_of_diamond;
af.aftype = AFT_SPELL;
send_to_char("As the pain fades you realize that your skin has become made of diamond!",ch);
act("$n's skin slowly comes to more resemble diamond then skin",ch,NULL,NULL,TO_ROOM);
}
affect_to_char(ch,&af);
}
void do_invoke_jackass( CHAR_DATA *ch
) {
OBJ_DATA *obj;
obj = get_eq_char(ch, WEAR_BRAND);
act("$n's $p doesn't glow much due to $s stupidity.",ch,obj,0,TO_ROOM);
act("Your $p doesn't glow much, probably because you're a jackass.",ch,obj,0,TO_CHAR);
send_to_char("You smite yourself! What a jackass!\n\r",ch);
act("$n smites $mself! What a jackass!",ch,NULL,NULL,TO_ROOM);
ch->hit /= 2;
return;
}
void do_invoke_jerle( CHAR_DATA *ch )
{
send_to_char("Insert fancy tatto affect here.\n\r",ch);
return;
/*OBJ_DATA *obj;
CHAR_DATA *victim;
int x;
int sn;
if(ch->position!=POS_FIGHTING) {
act("Nothing seemed to happen.",ch,0,0,TO_CHAR);
return;
}
x=number_percent();
obj = get_eq_char(ch, WEAR_BRAND);
act("Comes to life to aid in the fight!",ch,obj,0,TO_ROOM);
act("Comes to life to aid in the fight!",ch,obj,0,TO_CHAR);
victim = ch->fighting;
if(x<50) {
sn = skill_lookup("holy word");
spell_acid_blast(sn, 52, ch, victim, (int)NULL);
WAIT_STATE(ch,PULSE_VIOLENCE*2);
return;
}*/
}
void do_invoke_vasilis( CHAR_DATA *ch )
{
OBJ_DATA *obj;
int sn;
obj = get_eq_char(ch, WEAR_BRAND);
act("$n's mark of $p begins to glow, bathing you in an aura of serenity.",ch,obj,0,TO_ROOM);
act("Your mark of $p begins to glow, bathing you in an aura of serenity.",ch,obj,0,TO_CHAR);
if (ch->position != POS_FIGHTING)
{
sn = skill_lookup("rejuvenate");
spell_fortitude(sn, ch->level, ch, ch, (int)NULL);
return;
}
}
void do_invoke_merth( CHAR_DATA *ch )
{
OBJ_DATA *obj;
AFFECT_DATA af;
if (is_affected(ch,gsn_artic_fury))
{
send_to_char("{BYou are already in a state of inner strength.{x\n\r",ch);
return;
}
obj = get_eq_char(ch, WEAR_BRAND);
act("{B$n's $p shimmers a faint blue.{x",ch,obj,0,TO_ROOM);
act("{bYour $p flickers a bright blue!{x",ch,obj,0,TO_CHAR);
ch->hit += (ch->level*2)* 10;
ch->hit = UMIN(ch->hit,ch->max_hit);
send_to_char("{bYou concentrate and focus your mind on your inner courage.{x\n\r",ch);
act("{B$n flickers a mystical blue as they flare with artic fury!{x",ch,NULL,NULL,TO_ROOM);
if (check_dispel(ch->level+3,ch,skill_lookup("blindness")))
{
act("$n is no longer blinded.",ch,NULL,NULL,TO_ROOM);
}
if (check_dispel(ch->level+3,ch,skill_lookup("curse")))
{
act("$n is no longer cursed.",ch,NULL,NULL,TO_ROOM);
}
if (check_dispel(ch->level+3,ch,skill_lookup("poison")))
{
act("$n looks less ill.",ch,NULL,NULL,TO_ROOM);
}
if (check_dispel(ch->level+3,ch,skill_lookup("plague")))
{
act("$n's sores vanish.",ch,NULL,NULL,TO_ROOM);
}
init_affect(&af);
af.where = TO_AFFECTS;
af.aftype = AFT_SPELL;
af.type = gsn_artic_fury;
af.level = ch->level;
af.duration = 24;
af.modifier = -200;
af.bitvector = AFF_HASTE;
af.location = APPLY_AC;
affect_to_char(ch,&af);
return;
}
void do_invoke_deomanix( CHAR_DATA *ch )
{
int sn;
if(ch->position!=POS_FIGHTING) {
sn = skill_lookup("kinetic shield");
spell_kinetic_shield(sn, ch->level, ch, ch, (int)NULL);
return;
}
}
void do_invoke_ceial(CHAR_DATA *ch)
{
AFFECT_DATA af;
OBJ_DATA *obj;
if (is_affected(ch,gsn_dark_blessing))
{
send_to_char("The dark lord has already blessed you!\n\r",ch);
return;
}
obj = get_eq_char(ch, WEAR_BRAND);
act("$n's $p hisses violently!",ch,obj,0,TO_ROOM);
act("Your $p hisses violently!",ch,obj,0,TO_CHAR);
send_to_char("The dark lord has granted you a blessing.\n\r",ch);
init_affect(&af);
af.type = gsn_dark_blessing;
af.aftype = AFT_SPELL;
af.level = ch->level;
af.duration = 20;
af.modifier = -25;
af.bitvector = 0;
af.location = APPLY_SAVES;
affect_to_char(ch,&af);
af.location = APPLY_HITROLL;
af.modifier = 25;
affect_to_char(ch,&af);
return;
}
void do_invoke_detlef( CHAR_DATA *ch )
{
OBJ_DATA *obj;
AFFECT_DATA af;
if (is_affected(ch,gsn_phat_blunt))
{
send_to_char("You cannot smoke phat blunt too much!\n\r",ch);
return;
}
obj = get_eq_char(ch, WEAR_BRAND);
act("$n's $p glows green.",ch,obj,0,TO_ROOM);
act("Your $p glows green.",ch,obj,0,TO_CHAR);
ch->hit += (ch->level*2)* 10;
ch->hit = UMIN(ch->hit,ch->max_hit);
send_to_char("You smoke a phat blunt and feel MUCH better.\n\r",ch);
act("$n smokes $s phat blunt and feels much better.",ch,NULL,NULL,TO_ROOM);
if (check_dispel(ch->level+3,ch,skill_lookup("blindness")))
{
act("$n is no longer blinded.",ch,NULL,NULL,TO_ROOM);
}
if (check_dispel(ch->level+3,ch,skill_lookup("curse")))
{
act("$n is no longer cursed.",ch,NULL,NULL,TO_ROOM);
}
if (check_dispel(ch->level+3,ch,skill_lookup("poison")))
{
act("$n looks less ill.",ch,NULL,NULL,TO_ROOM);
}
if (check_dispel(ch->level+3,ch,skill_lookup("plague")))
{
act("$n's sores vanish.",ch,NULL,NULL,TO_ROOM);
}
init_affect(&af);
af.where = TO_AFFECTS;
af.aftype = AFT_SKILL;
af.type = gsn_phat_blunt;
af.level = ch->level;
af.duration = 24;
af.modifier = 10;
af.bitvector = 0;
af.location = APPLY_HITROLL;
affect_to_char(ch,&af);
af.location = APPLY_DAMROLL;
affect_to_char(ch,&af);
af.location = APPLY_DEX;
af.modifier = 4;
affect_to_char(ch,&af);
return;
}