/*Xkilla made this alien class*/
#if defined(macintosh)
#include <types.h>
#else
#include <sys/types.h>
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include "merc.h"
#include "player.h"
/*
* Local functions.
*/
//Autoconsuming in fight.c
void do_autoconsume(CHAR_DATA *ch,char *argument)
{
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r", ch );
return;
}
if (!IS_SET(ch->xkilla->plr, PLR_AUTOCONSUME))
{
SET_BIT(ch->xkilla->plr, PLR_AUTOCONSUME);
send_to_char("Autoconsuming On.", ch);
}
else
{
REMOVE_BIT(ch->xkilla->plr, PLR_AUTOCONSUME);
send_to_char("Autoconsuming Off.", ch);
}
}
void do_alienpowers(CHAR_DATA *ch,char *argument)
{
char buf[MAX_STRING_LENGTH];
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN)) {
send_to_char("Huh?\n\r", ch );
return;}
send_to_char("#2#u////////////#n#CA#clien #RP#rowers#2#u\\\\\\\\\\\\\\\\\\\\\\\\#n#3\n\r", ch );
if (IS_ALIPOWER( ch, ALI_PYRO))
send_to_char("#3You have the power Pyrokinesis, which gives a extra attack between rounds..\n\r", ch );
if (IS_ALIPOWER( ch, ALI_SPEED))
send_to_char("#3You have the power Speed, which gives you super attacks and a little bit more parry and dodge..\n\r", ch );
if (IS_ALIPOWER( ch, ALI_TOUGH))
send_to_char("#3You have the power Toughness, which gives you super tough skin..\n\r", ch );
if (IS_ALIPOWER( ch, ALI_BEAM))
send_to_char("#3You have the power Beam, which gives allows you to goto players with beam on..\n\r", ch );
if (IS_ALIPOWER( ch, ALI_SPACEEYES))
send_to_char("#3You have the power Spaceeyes, which gives you the ability to see anything..\n\r", ch );
if (IS_ALIPOWER( ch, ALI_BIOMORPH))
send_to_char("#3You have the power Biomorph, which lets you morph from a human to a #GA#glien#3..\n\r", ch );
if (IS_ALIPOWER( ch, ALI_PROBE))
send_to_char("#3You have the power Probe, which allows you to consider anyone..\n\r", ch );
if (IS_ALIPOWER( ch, ALI_RADAR))
send_to_char("#3You have the power Radar, which lets you track down your enemies and friends..\n\r", ch );
send_to_char("\n\r", ch);
sprintf(buf, "#0Generation : %d #n \n\r", ch->pcdata->stats[UNI_GEN]);
send_to_char( buf, ch );
if (IS_SET(ch->special, SPC_PRINCE))
send_to_char("#2You are a Alien Stalker.\n\r", ch );
sprintf( buf, "#0You have %d #GP#glanet#0 points!.#n\n\r",
ch->pcdata->stats[ALIEN_PLANET] );
send_to_char( buf, ch );
send_to_char("\n\r", ch );
return;
}
void do_brood( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char arg1 [MAX_INPUT_LENGTH];
char arg2 [MAX_INPUT_LENGTH];
int i;
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if ( IS_NPC(ch) ) return;
if ( arg1[0] == '\0' || arg2[0] == '\0' )
{
send_to_char( "Syntax: brood <char> <brood>.\n\r", ch );
return;
}
if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
{
send_to_char( "That player is not here.\n\r", ch);
return;
}
if ( !str_cmp( arg2, "" ) )
{
victim->brood = 0;
send_to_char("You are now a !\n\r", victim);
}
else
{
send_to_char( "Syntax: brood <char> <brood>.\n\r", ch );
return;
}
send_to_char("Brood Set.\n\r",ch);
return;
}
void do_ptoken( CHAR_DATA *ch, char *argument )
{
char arg1[MAX_INPUT_LENGTH];
char arg2[MAX_INPUT_LENGTH];
char buf[MAX_STRING_LENGTH];
OBJ_INDEX_DATA *pObjIndex;
OBJ_DATA *obj;
CHAR_DATA *victim;
int value;
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if ( arg1[0] == '\0' || !is_number( arg1 ) )
{
send_to_char("Please specify a value for the planet token.\n\r",ch);
return;
}
else
{
value = atoi( arg1 );
if ( value < 1 || value > 10000 )
{
send_to_char( "Planet tokens should have a value between 1 and 10000.\n\r", ch );
return;
}
else if ( value > ch->pcdata->stats[ALIEN_PLANET] && !IS_IMMORTAL(ch) )
{
sprintf(buf,"You only have %d planet points left to put into tokens.\n\r",ch->pcdata->stats[ALIEN_PLANET]);
send_to_char( buf, ch );
return;
}
}
victim = get_char_room( ch, arg2 );
if ( ( pObjIndex = get_obj_index( OBJ_VNUM_PROTOPLASM ) ) == NULL )
{
send_to_char( "Error...missing object, please inform Xkilla.\n\r", ch );
return;
}
ch->pcdata->stats[ALIEN_PLANET] -= value;
if (ch->pcdata->stats[ALIEN_PLANET] < 0)
ch->pcdata->stats[ALIEN_PLANET] = 0;
obj = create_object( pObjIndex, value );
obj->value[0] = value;
obj->level = 1;
obj->cost = value*1000;
obj->item_type = ITEM_PTOKEN;
obj_to_char(obj,ch);
if (obj->questmaker != NULL) free_string(obj->questmaker);
obj->questmaker = str_dup(ch->name);
free_string( obj->name );
obj->name = str_dup( "planet token" );
sprintf(buf,"#2a #1%d#2 point p#glanet #Lt#loken#n",value);
free_string( obj->short_descr );
obj->short_descr = str_dup( buf );
sprintf(buf,"#2A #1%d #2point p#glanet #Lt#loken #2lies on the floor.#n",value);
free_string( obj->description );
obj->description = str_dup( buf );
if (victim != NULL && victim != ch)
{
act( "You pull $p out of $N's hair .", ch, obj, victim, TO_CHAR );
act( "$n pulls $p out of $s hair.", ch, obj, victim, TO_NOTVICT );
act( "$n pulls $p out of $N's hair.", ch, obj, victim, TO_VICT );
}
else
{
act( "You create $p.", ch, obj, NULL, TO_CHAR );
act( "$n creates $p.", ch, obj, NULL, TO_ROOM );
}
return;
}
void do_aliencreate( CHAR_DATA *ch, char *argument )
{
OBJ_INDEX_DATA *pObjIndex;
OBJ_DATA *obj;
char arg[MAX_INPUT_LENGTH];
int vnum = 0;
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (arg[0] == '\0')
{
send_to_char("Choices:\n\r",ch);
send_to_char("#3S#oword#7 of the #GA#gliens#n\n\r",ch);
send_to_char("#3G#orepper#7 of the #GA#gliens#n\n\r",ch);
return;
}
if (!str_cmp(arg,"sword" )) vnum = 10751;
else if (!str_cmp(arg,"grepper" )) vnum = 10752;
else
{
send_to_char("That is an invalid type.\n\r", ch );
return;
}
if ( ch->pcdata->stats[ALIEN_PLANET] < 150000)
{
send_to_char("You need 150,000 planet points.",ch);
return;
}
if ( vnum == 0 || (pObjIndex = get_obj_index( vnum )) == NULL)
{
send_to_char("Missing object, please inform Xkilla.\n\r",ch);
return;
}
ch->pcdata->stats[ALIEN_PLANET] -= 150000;
obj = create_object(pObjIndex, 50);
obj_to_char(obj, ch);
act("A small UFO drops the $p in your hands.",ch,obj,NULL,TO_CHAR);
act("A small UFO drops the $p in $n's hands.",ch,obj,NULL,TO_ROOM);
return;
}
void do_consume( CHAR_DATA *ch, char *argument )
{
OBJ_DATA *corpse;
OBJ_DATA *c_next;
OBJ_DATA *obj;
OBJ_DATA *obj_next;
char arg[MAX_INPUT_LENGTH];
char buf[MAX_INPUT_LENGTH];
int points;
one_argument( argument, arg );
if( !IS_CLASS(ch, CLASS_ALIEN)) return;
for ( corpse = ch->in_room->contents; corpse != NULL; corpse = c_next )
{
c_next = corpse->next_content;
if ( corpse->item_type != ITEM_CORPSE_NPC && corpse->item_type != ITEM_CORPSE_PC)
continue;
points = number_range( 5, 50 * 10 );
ch->pcdata->stats[ALIEN_PLANET] += points;
act( "$n savagely devours a corpse.", ch, NULL, NULL, TO_ROOM );
sprintf( buf, "You gain %d planet points for consuming a corpse.\n\r", points );
send_to_char( buf, ch );
for ( obj = corpse->contains; obj; obj = obj_next )
{
obj_next = obj->next_content;
obj_from_obj( obj );
obj_to_room( obj, ch->in_room );
}
if (corpse != NULL) extract_obj( corpse );
}
return;
}
void do_prince( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char arg1 [MAX_INPUT_LENGTH];
argument = one_argument( argument, arg1 );
if ( IS_NPC(ch) ) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if ( arg1[0] == '\0' )
{
send_to_char( "Syntax is: prince <target>\n\r", ch );
return;
}
if ( ( victim = get_char_room( ch, arg1 ) ) == NULL )
{
send_to_char( "They aren't here.\n\r", ch );
return;
}
if ( IS_NPC(victim) )
{
send_to_char( "Not on NPC's.\n\r", ch );
return;
}
if ( ch == victim )
{
send_to_char( "Not on yourself!\n\r", ch );
return;
}
if (!IS_CLASS(victim, CLASS_ALIEN))
{
send_to_char("They are not alien.\n\r",ch);
return;
}
if (ch->pcdata->stats[UNI_GEN] == 2)
{
if (IS_SET(victim->special,SPC_PRINCE))
{
send_to_char("You have lost your stalker abilities!\n\r",victim);
send_to_char("You remove their stalker abilities.\n\r",ch);
REMOVE_BIT(victim->special, SPC_PRINCE);
}
else
{
send_to_char("You have been made a stalker!\n\r",victim);
send_to_char("You make them a stalker.\n\r",ch);
SET_BIT(victim->special, SPC_PRINCE);
}
save_char_obj(victim);
return;
}
else
{
send_to_char("You have to be gen 2.", ch);
}
}
void do_pyrokinesis( CHAR_DATA *ch, char *argument )
{
char arg[MAX_INPUT_LENGTH];
CHAR_DATA *victim;
OBJ_DATA *obj;
one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (!IS_ALIPOWER( ch, ALI_PYRO))
{
send_to_char("You do not have the planet Pyrokinesis yet.\n\r",ch);
return;
}
if ( ( victim = get_char_room( ch, arg ) ) == NULL )
{
if (ch->fighting == NULL) {
send_to_char( "They aren't here.\n\r", ch );
return;}
else victim = ch->fighting;
}
if ( victim == ch )
{
send_to_char( "How can you Pyrokinesis yourself?\n\r", ch );
return;
}
if ( is_safe( ch, victim ) )
return;
check_killer( ch, victim );
if (number_percent() > 10)
multi_hit( ch, victim, gsn_pyro );
else
damage( ch, victim, 0, gsn_pyro );
WAIT_STATE( ch, 8 );
return;
}
void do_probe( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
OBJ_DATA *obj;
char arg [MAX_INPUT_LENGTH];
char buf [MAX_INPUT_LENGTH];
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (!IS_ALIPOWER( ch, ALI_PROBE))
{
send_to_char("You do not have the planet Probe yet.\n\r",ch);
return;
}
if ( arg[0] == '\0' )
{
send_to_char( "Probe what?\n\r", ch );
return;
}
if ( ( victim = get_char_room( ch, arg ) ) == NULL )
{
if ( ( obj = get_obj_carry( ch, arg ) ) == NULL )
{
send_to_char( "Probe what?\n\r", ch );
return;
}
ch->pcdata->condition[COND_THIRST] -= number_range(40,50);
act("$n examines $p intently.",ch,obj,NULL,TO_ROOM);
spell_identify( skill_lookup( "identify" ), ch->level, ch, obj );
return;
}
act("$n probes $N.",ch,NULL,victim,TO_NOTVICT);
act("$n probes you.",ch,NULL,victim,TO_VICT);
if (IS_NPC(victim)) sprintf(buf, "%s is an NPC.\n\r",victim->short_descr);
else
{
if (victim->level == 12) sprintf(buf, "%s is an Implementor.\n\r", victim->name);
else if (victim->level == 11) sprintf(buf, "%s is a High Judge.\n\r", victim->name);
else if (victim->level == 10) sprintf(buf, "%s is a Judge.\n\r", victim->name);
else if (victim->level == 9 ) sprintf(buf, "%s is an Enforcer.\n\r", victim->name);
else if (victim->level == 8 ) sprintf(buf, "%s is a Quest Maker.\n\r", victim->name);
else if (victim->level == 7 ) sprintf(buf, "%s is a Builder.\n\r", victim->name);
else if (victim->level >= 3 ) sprintf(buf, "%s is an Avatar.\n\r", victim->name);
else sprintf(buf, "%s is a Mortal.\n\r", victim->name);
}
send_to_char(buf,ch);
if (!IS_NPC(victim))
{
sprintf(buf,"Str:%d, Int:%d, Wis:%d, Dex:%d,
Con:%d.\n\r",get_curr_str(victim),get_curr_int(victim),get_curr_wis(victim),get_curr_dex(victim),get_curr_con(victim));
send_to_char(buf,ch);
}
sprintf(buf,"Hp:%d/%d, Mana:%d/%d,
Move:%d/%d.\n\r",victim->hit,victim->max_hit,victim->mana,victim->max_mana,victim->move,victim->max_move);
send_to_char(buf,ch);
if (!IS_NPC(victim)) sprintf(buf,"Hitroll:%d, Damroll:%d,
AC:%d.\n\r",char_hitroll(victim),char_damroll(victim),char_ac(victim));
else sprintf(buf,"AC:%d.\n\r",char_ac(victim));
send_to_char(buf,ch);
if (!IS_NPC(victim))
{
sprintf(buf,"Status:%d, ",victim->race);
send_to_char(buf,ch);
if (IS_CLASS(victim, CLASS_VAMPIRE))
{
sprintf(buf,"Blood:%d, ",victim->pcdata->condition[COND_THIRST]);
send_to_char(buf,ch);
}
}
sprintf(buf,"Alignment:%d.\n\r",victim->alignment);
send_to_char(buf,ch);
if (!IS_NPC(victim) && IS_EXTRA(victim, EXTRA_PREGNANT))
act("$N is pregnant.",ch,NULL,victim,TO_CHAR);
if (!IS_NPC(victim) && IS_CLASS(victim, CLASS_VAMPIRE))
{
send_to_char("Disciplines:",ch);
if (IS_VAMPAFF(victim, VAM_PROTEAN)) send_to_char(" Protean",ch);
if (IS_VAMPAFF(victim, VAM_VICISSITUDE)) send_to_char(" vicissitude",ch);
if (IS_VAMPAFF(victim, VAM_CELERITY)) send_to_char(" Celerity",ch);
if (IS_VAMPAFF(victim, VAM_FORTITUDE)) send_to_char(" Fortitude",ch);
if (IS_VAMPAFF(victim, VAM_POTENCE)) send_to_char(" Potence",ch);
if (IS_VAMPAFF(victim, VAM_OBFUSCATE)) send_to_char(" Obfuscate",ch);
if (IS_VAMPAFF(victim, VAM_OBTENEBRATION)) send_to_char(" Obtenebration",ch);
if (IS_VAMPAFF(victim, VAM_SERPENTIS)) send_to_char(" Serpentis",ch);
if (IS_VAMPAFF(victim, VAM_AUSPEX)) send_to_char(" Auspex",ch);
if (IS_VAMPAFF(victim, VAM_DOMINATE)) send_to_char(" Dominate",ch);
if (IS_VAMPAFF(victim, VAM_PRESENCE)) send_to_char(" Presence",ch);
send_to_char(".\n\r",ch);
}
return;
}
void do_radar( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
ROOM_INDEX_DATA *chroom;
ROOM_INDEX_DATA *victimroom;
char arg [MAX_INPUT_LENGTH];
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (!IS_ALIPOWER( ch, ALI_RADAR))
{
send_to_char("You do not have the planet Radar yet.\n\r",ch);
return;
}
if ( arg[0] == '\0' )
{
send_to_char( "Use radar on whom?\n\r", ch );
return;
}
if ( ( victim = get_char_world( ch, arg ) ) == NULL )
{
send_to_char( "They aren't here.\n\r", ch );
return;
}
chroom = ch->in_room;
victimroom = victim->in_room;
char_from_room(ch);
char_to_room(ch,victimroom);
if (IS_AFFECTED(ch, AFF_SHADOWPLANE) && (!IS_AFFECTED(victim,
AFF_SHADOWPLANE)))
{
REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
do_look(ch,"auto");
SET_BIT(ch->affected_by, AFF_SHADOWPLANE);
}
else if (!IS_AFFECTED(ch, AFF_SHADOWPLANE) && (IS_AFFECTED(victim, AFF_SHADOWPLANE)))
{
SET_BIT(ch->affected_by, AFF_SHADOWPLANE);
do_look(ch,"auto");
REMOVE_BIT(ch->affected_by, AFF_SHADOWPLANE);
}
else
do_look(ch,"auto");
char_from_room(ch);
char_to_room(ch,chroom);
return;
}
void do_abduct( CHAR_DATA *ch, char *argument )
{
char arg [MAX_INPUT_LENGTH];
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_IMMUNE(ch, IMM_ALIEN))
{
send_to_char("You will now allow aliens to abduct you.\n\r",ch);
SET_BIT(ch->immune, IMM_ALIEN);
return;
}
send_to_char("You will no longer allow aliens to abduct you.\n\r",ch);
REMOVE_BIT(ch->immune, IMM_ALIEN);
return;
}
void do_planet( CHAR_DATA *ch, char *argument )
{
CHAR_DATA *victim;
char arg1 [MAX_INPUT_LENGTH];
char arg2 [MAX_INPUT_LENGTH];
int planet = 0;
int cost = 0;
smash_tilde(argument);
argument = one_argument( argument, arg1 );
argument = one_argument( argument, arg2 );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if ( arg1[0] == '\0' || arg2[0] == '\0' )
{
send_to_char( "#u#2Syntax: Planet <person> <planet> #n\n\r", ch );
send_to_char( "#u#1| Toughness [10000] | Speed [15000] |#n\n\r", ch );
send_to_char( "#u#1| Beam [17500] | Probe [20000] |#n\n\r", ch );
send_to_char( "#u#1| Radar [25000] | Pyrokinesis [22500] |#n\n\r", ch );
send_to_char( "#u#1| Biomorph [40000] | SpaceEyes [20000] |#n\n\r", ch );
return;
}
if ( ( victim = get_char_world( ch, arg1 ) ) == NULL )
{
send_to_char( "Nobody by that name.\n\r", ch );
return;
}
if (str_cmp(victim->clan,ch->clan) && ch->pcdata->stats[UNI_GEN] >1) {
send_to_char("Only on your clan!.\n\r", ch );
return;}
if ( IS_NPC(victim) )
{
send_to_char( "Not on NPC's.\n\r", ch );
return;
}
if ( victim->level != LEVEL_AVATAR)
{
send_to_char( "Only on an avatar.\n\r", ch );
return;
}
if ( victim->class != CLASS_ALIEN)
{
send_to_char( "Only on Aliens.\n\r", ch);
return;
}
if (!str_cmp(arg2,"toughness"))
{planet = ALI_TOUGH; cost = 10000;}
else if (!str_cmp(arg2,"speed"))
{planet = ALI_SPEED; cost= 15000;}
else if (!str_cmp(arg2,"beam"))
{planet = ALI_BEAM; cost= 17500;}
else if (!str_cmp(arg2,"probe"))
{planet = ALI_PROBE; cost= 20000;}
else if (!str_cmp(arg2,"radar"))
{planet = ALI_RADAR; cost= 25000;}
else if (!str_cmp(arg2,"pyrokinesis"))
{planet = ALI_PYRO; cost= 22500;}
else if (!str_cmp(arg2,"biomorph"))
{planet = ALI_BIOMORPH; cost= 40000;}
else if (!str_cmp(arg2, "spaceeyes"))
{planet = ALI_SPACEEYES; cost= 20000;}
else
{
send_to_char( "#u#2Please select a power from: #n\n\r",ch);
send_to_char( "#u#1| Toughness [10000] | Speed [15000] |#n\n\r", ch );
send_to_char( "#u#1| Beam [17500] | Probe [20000] |#n\n\r", ch );
send_to_char( "#u#1| Radar [25000] | Pyrokinesis [22500] |#n\n\r", ch );
send_to_char( "#u#1| Biomorph [40000] | SpaceEyes [20000] |#n\n\r", ch );
return;
}
if (IS_ALIPOWER(victim, planet))
{
send_to_char("They have already got that planet.\n\r",ch);
return;
}
if (ch->pcdata->stats[ALIEN_PLANET] < cost)
{
send_to_char("You have to little power to give that planet.\n\r",ch);
return;
}
SET_BIT(victim->xkilla->aliens, planet);
ch->pcdata->stats[ALIEN_PLANET] -= cost;
if (victim != ch) send_to_char("You have been given a planet power from your leader!\n\r",victim);
send_to_char("Ok.\n\r",ch);
if (victim != ch) save_char_obj(ch);
save_char_obj(victim);
return;
}
void do_aclass( CHAR_DATA *ch, char *argument )
{
char buf [MAX_INPUT_LENGTH];
CHAR_DATA *victim;
char arg [MAX_INPUT_LENGTH];
argument = one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN) || ch->pcdata->stats[UNI_GEN] > 3)
{
send_to_char("Huh?\n\r",ch);
return;
}
if ( arg[0] == '\0' )
{
send_to_char( "Class whom Alien?\n\r", ch );
return;
}
if ( ( victim = get_char_room( ch, arg ) ) == NULL )
{
send_to_char( "They aren't here.\n\r", ch );
return;
}
if ( IS_NPC(victim) )
{
send_to_char( "Not on NPC's.\n\r", ch );
return;
}
if ( ch == victim )
{
send_to_char("Not on yourself.\n\r", ch );
return;
}
if (victim->class != 0) {
send_to_char("They already have a class.\n\r", ch );
return;}
if ( victim->level != LEVEL_AVATAR && !IS_IMMORTAL(victim) )
{
send_to_char( "Only on avatars.\n\r", ch );
return;
}
if (!IS_IMMUNE(victim,IMM_ALIEN))
{
send_to_char( "Not on an unwilling person.\n\r", ch);
return;
}
if (ch->exp < 10000)
{
send_to_char("You cannot afford the 10,000 exp.\n\r",ch);
return;
}
ch->exp = ch->exp - 10000;
act("You make $N a alien!", ch, NULL, victim, TO_CHAR);
act("$n makes $N a alien!", ch, NULL, victim, TO_NOTVICT);
act("$n makes you a alien!", ch, NULL, victim, TO_VICT);
victim->class=0;
victim->class=CLASS_ALIEN;
victim->special=0;
if (IS_CLASS(victim, CLASS_VAMPIRE)) do_mortalvamp(victim,"");
REMOVE_BIT(victim->act, PLR_HOLYLIGHT);
REMOVE_BIT(victim->act, PLR_WIZINVIS);
REMOVE_BIT(victim->special, SPC_SIRE);
REMOVE_BIT(victim->special, SPC_ANARCH);
victim->pcdata->stats[UNI_RAGE] = 0;
victim->pcdata->stats[UNI_GEN] = ch->pcdata->stats[UNI_GEN] + 1;
victim->special = 0;
free_string(victim->morph);
victim->morph=str_dup("");
free_string(victim->clan);
victim->clan=str_dup(ch->clan);
free_string(victim->lord);
if (ch->pcdata->stats[UNI_GEN] == 1)
victim->lord=str_dup(ch->name);
else
{
sprintf(buf,"%s %s",ch->lord,ch->name);
victim->lord=str_dup(buf);
}
save_char_obj(ch);
save_char_obj(victim);
return;
}
void do_aliens( CHAR_DATA *ch, char *argument )
{
char buf[MAX_STRING_LENGTH];
char arg[MAX_INPUT_LENGTH];
CHAR_DATA *gch;
one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
sprintf( buf, "The aliens:\n\r" );
send_to_char( buf, ch );
send_to_char("#2[ Name ] [ Hits ] [ Mana ] [ Move ] [ Exp ] [ Power ]#n\n\r", ch );
for ( gch = char_list; gch != NULL; gch = gch->next )
{
if ( IS_NPC(gch) ) continue;
if ( !IS_CLASS(gch, CLASS_ALIEN))
continue;
{
sprintf( buf,
"#0[%-16s] [%-6d] [%-6d] [%-6d] [%7d] [ %-9d ]#n\n\r",
capitalize( gch->name ),
gch->hit,gch->mana,gch->move,
gch->exp, gch->pcdata->stats[ALIEN_PLANET]);
send_to_char( buf, ch );
}
}
return;
}
void do_beam(CHAR_DATA *ch, char *argument)
{
CHAR_DATA *victim;
char arg [MAX_INPUT_LENGTH];
one_argument( argument, arg );
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (!IS_ALIPOWER( ch, ALI_BEAM))
{
send_to_char("You do not have the planet Beam yet.\n\r",ch);
return;
}
if ( arg[0] == '\0')
{
send_to_char( "Send a beam to who?\n\r", ch );
return;
}
if ( (victim = get_char_world( ch, arg ) ) == NULL )
{
send_to_char("They arent here.\n\r",ch);
return;
}
if ( (victim == ch))
{
send_to_char( "Not on your self.\n\r", ch );
return;
}
if ( (victim->in_room == NULL))
{
send_to_char( "They are in no room.\n\r", ch );
return;
}
if (!IS_SET(victim->immune, IMM_ALIEN))
{
send_to_char( "They don't want you to abduct them.\n\r", ch );
return;
}
if ( (victim->in_room->vnum == ch->in_room->vnum))
{
send_to_char( "They are already here.\n\r", ch );
return;
}
do_say(ch, "Beaming\a\a. \a\a. \a\a. \a\a. \a\a. \a\a. \a\a. \a\a.");
do_say(ch, "Done. . . . . . . .");
send_to_char("You enter the beam.\n\r",ch);
char_from_room(ch);
char_to_room(ch, get_room_index(victim->in_room->vnum));
do_look(ch,"auto");
WAIT_STATE( ch, 16 );
act( "You float down infront $N in a beam of red light.", ch, NULL, victim, TO_CHAR);
act( "$n floats down infront of you in a beam of red light.", ch, NULL, victim, TO_VICT);
act( "$n floats down infront of $N in a beam of red light.", ch, NULL, victim, TO_NOTVICT);
return;
}
void do_biomorph( CHAR_DATA *ch, char *argument )
{
char buf [MAX_STRING_LENGTH];
if (IS_NPC(ch)) return;
if (!IS_CLASS(ch, CLASS_ALIEN))
{
send_to_char("Huh?\n\r",ch);
return;
}
if (!IS_ALIPOWER( ch, ALI_BIOMORPH))
{
send_to_char("You do not have the planet Biomorph.\n\r",ch);
return;
}
if (ch->mounted == IS_RIDING) do_dismount(ch,"");
if ( IS_SET(ch->polyaff, POLY_BIOMORPH) )
{
act( "You change back into human form.", ch, NULL, NULL, TO_CHAR );
act( "$n changes back into human form.", ch, NULL, NULL, TO_ROOM );
REMOVE_BIT(ch->affected_by, AFF_POLYMORPH);
REMOVE_BIT(ch->polyaff, POLY_BIOMORPH);
REMOVE_BIT(ch->pcdata->stats[UNI_AFF], VAM_CHANGED);
clear_stats(ch);
free_string( ch->morph );
ch->morph = str_dup( "" );
return;
}
else if ( !IS_SET(ch->polyaff, POLY_ANGELFORM) )
{
act( "You are struck by lightning you transform into a alien.", ch, NULL, NULL, TO_CHAR );
act( "$n is struck by lightning and turns into a alien.", ch, NULL, NULL, TO_ROOM );
SET_BIT(ch->polyaff, POLY_BIOMORPH);
SET_BIT(ch->affected_by, AFF_POLYMORPH);
SET_BIT(ch->pcdata->stats[UNI_AFF], VAM_CHANGED);
sprintf(buf, "#3%s #7the #GA#glien#n", ch->name);
free_string( ch->morph );
ch->morph = str_dup( buf );
ch->damroll = ch->damroll + 200;
ch->hitroll = ch->hitroll + 200;
return;
}
else
send_to_char( "BIOMORPH: The Power to show your true self.\n\r", ch );
return;
}
void do_spaceeyes( CHAR_DATA *ch, char *argument)
{
if ( IS_NPC(ch))
return;
if ( !IS_CLASS(ch, CLASS_ALIEN) )
{
send_to_char("Huh?\n\r",ch );
return;
}
if (!IS_ALIPOWER( ch, ALI_SPACEEYES))
{
send_to_char("You don't have planet SpaceEyes!\n\r",ch );
return;
}
if ( IS_SET(ch->act, PLR_HOLYLIGHT))
{
REMOVE_BIT(ch->act, PLR_HOLYLIGHT);
send_to_char("Your eyes degrade back to regular vision.\n\r",ch );
}
else
{
send_to_char("Your eyes begin to see everything.\n\r",ch );
SET_BIT(ch->act, PLR_HOLYLIGHT);
}
return;
}