Syndicate simple animals will only attempt to destroy obstacles when chasing a target. Now the away missions wont start horribly smashed up.

Committing Brotemis's away mission and related code. I think he wanted to make a few more changes, but it should be functional.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5085 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
Kortgstation@gmail.com
2012-11-16 02:32:38 +00:00
parent 5ba2a398a1
commit a814ff7be4
13 changed files with 993 additions and 10 deletions

View File

@@ -1447,6 +1447,30 @@ proc/process_ghost_teleport_locs()
name = "\improper Strange Station"
icon_state = "away"
/area/awaymission/wwmines
name = "\improper Wild West Mines"
icon_state = "away1"
luminosity = 1
requires_power = 0
/area/awaymission/wwgov
name = "\improper Wild West Mansion"
icon_state = "away2"
luminosity = 1
requires_power = 0
/area/awaymission/wwrefine
name = "\improper Wild West Refinery"
icon_state = "away3"
luminosity = 1
requires_power = 0
/area/awaymission/wwvault
name = "\improper Wild West Vault"
icon_state = "away3"
requires_power = 0
luminosity = 0
/area/awaymission/desert
name = "Mars"
icon_state = "away"

View File

@@ -18,7 +18,7 @@
name = "Pylon"
desc = "A floating crystal that hums with an unearthly energy"
icon_state = "pylon"
luminosity = 5
/obj/structure/cult/tome
name = "Desk"

View File

@@ -72,4 +72,69 @@
user << "You have a very bad feeling about this."
return
/obj/machinery/wwish_granter
name = "Wish Granter"
desc = "You're not so sure about this, anymore..."
icon = 'icons/obj/device.dmi'
icon_state = "syndbeacon"
anchored = 1
density = 1
var/chargesa = 1
var/insistinga = 0
/obj/machinery/wwish_granter/attack_hand(var/mob/user as mob)
usr.set_machine(src)
if(chargesa <= 0)
user << "The Wish Granter lies silent."
return
else if(!istype(user, /mob/living/carbon/human))
user << "You feel a dark stirring inside of the Wish Granter, something you want nothing of. Your instincts are better than any man's."
return
else if(is_special_character(user))
user << "Even to a heart as dark as yours, you know nothing good will come of this. Something instinctual makes you pull away."
else if (!insistinga)
user << "Your first touch makes the Wish Granter stir, listening to you. Are you really sure you want to do this?"
insistinga++
else
user << "You speak. [pick("I want the station to disappear","Humanity is corrupt, mankind must be destroyed","I want to be rich", "I want to rule the world","I want immortality.")]. The Wish Granter answers."
user << "Your head pounds for a moment, before your vision clears. You are the avatar of the Wish Granter, and your power is LIMITLESS! And it's all yours. You need to make sure no one can take it from you. No one can know, first."
chargesa--
insistinga = 0
if (!(HULK in user.mutations))
user.mutations.Add(HULK)
if (!(LASER in user.mutations))
user.mutations.Add(LASER)
if (!(XRAY in user.mutations))
user.mutations.Add(XRAY)
user.sight |= (SEE_MOBS|SEE_OBJS|SEE_TURFS)
user.see_in_dark = 8
user.see_invisible = SEE_INVISIBLE_LEVEL_TWO
if (!(COLD_RESISTANCE in user.mutations))
user.mutations.Add(COLD_RESISTANCE)
if (!(TK in user.mutations))
user.mutations.Add(TK)
if(!(HEAL in user.mutations))
user.mutations.Add(HEAL)
user << "You have a very bad feeling about this."
return

View File

@@ -35,6 +35,16 @@
spawn(0)
del(src)
/obj/effect/mine/proc/triggerrad1(obj)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
obj:radiation += 5000
randmutb(obj)
domutcheck(obj,null)
spawn(0)
del(src)
/obj/effect/mine/proc/triggerstun(obj)
if(ismob(obj))
var/mob/M = obj
@@ -103,6 +113,11 @@
icon_state = "uglymine"
triggerproc = "triggerrad"
/obj/effect/mine/meatgrinder
name = "Meat Grinder"
icon_state = "uglymine"
triggerproc = "triggerrad1"
/obj/effect/mine/plasma
name = "Plasma Mine"
icon_state = "uglymine"

View File

@@ -7,7 +7,8 @@ var/list/icons_to_ignore_at_floor_init = list("damaged1","damaged2","damaged3","
"asteroid","asteroid_dug",
"asteroid0","asteroid1","asteroid2","asteroid3","asteroid4",
"asteroid5","asteroid6","asteroid7","asteroid8","asteroid9","asteroid10","asteroid11","asteroid12",
"burning","oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "wood-broken", "carpet", "carpetcorner", "carpetside", "carpet")
"burning","oldburning","light-on-r","light-on-y","light-on-g","light-on-b", "wood", "wood-broken", "carpet", "carpetcorner", "carpetside", "carpet", "ironsand1", "ironsand2", "ironsand3", "ironsand4", "ironsand5", "ironsand6", "ironsand7", "ironsand8", "ironsand9", "ironsand10", "ironsand11",
"ironsand12", "ironsand13", "ironsand14", "ironsand15")
var/list/plating_icons = list("plating","platingdmg1","platingdmg2","platingdmg3","asteroid","asteroid_dug")
var/list/wood_icons = list("wood","wood-broken")

View File

@@ -194,4 +194,11 @@
for(var/direction in list(1,2,4,8,5,6,9,10))
if(istype(get_step(src,direction),/turf/simulated/floor))
var/turf/simulated/floor/FF = get_step(src,direction)
FF.update_icon() //so siding get updated properly
FF.update_icon() //so siding get updated properly
/turf/simulated/floor/ironsand/New()
..()
name = "Iron Sand"
icon_state = "ironsand[rand(1,15)]"

View File

@@ -0,0 +1,47 @@
/mob/living/simple_animal/hostile/faithless
name = "Faithless"
desc = "The Wish Granter's faith in humanity, incarnate"
icon_state = "faithless"
icon_living = "faithless"
icon_dead = "faithless_dead"
speak_chance = 0
turns_per_move = 5
response_help = "passes through the"
response_disarm = "shoves"
response_harm = "hits the"
speed = -1
stop_automated_movement_when_pulled = 0
maxHealth = 100
health = 100
harm_intent_damage = 10
melee_damage_lower = 18
melee_damage_upper = 18
attacktext = "grips"
attack_sound = 'sound/hallucinations/growl1.ogg'
min_oxy = 0
max_oxy = 0
min_tox = 0
max_tox = 0
min_co2 = 0
max_co2 = 0
min_n2 = 0
max_n2 = 0
minbodytemp = 0
/mob/living/simple_animal/hostile/faithless/Process_Spacemove(var/check_drift = 0)
return 1
/mob/living/simple_animal/hostile/faithless/FindTarget()
. = ..()
if(.)
emote("wails at [.]")
/mob/living/simple_animal/hostile/faithless/AttackingTarget()
. =..()
var/mob/living/L = .
if(istype(L))
if(prob(15))
L.Weaken(3)
L.visible_message("<span class='danger'>\the [src] knocks down \the [L]!</span>")

View File

@@ -42,6 +42,7 @@
var/stance = SYNDICATE_STANCE_IDLE //Used to determine behavior
var/mob/living/target_mob
var/hostile = 0
/mob/living/simple_animal/syndicate/Life()
..()
@@ -53,11 +54,11 @@
new weapon2 (src.loc)
del src
return
for(dir in list(NORTH,EAST,SOUTH,WEST))
var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir))
if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille))
obstacle.attack_animal(src)
if(hostile)
for(dir in list(NORTH,EAST,SOUTH,WEST))
var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir))
if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille))
obstacle.attack_animal(src)
if(health < 1)
Die()
@@ -76,7 +77,7 @@
if(!stat)
switch(stance)
if(SYNDICATE_STANCE_IDLE)
hostile = 0
stop_automated_movement = 0
for(var/atom/A in view(7,src))
@@ -99,6 +100,7 @@
if(SYNDICATE_STANCE_ATTACK) //This one should only be active for one tick
stop_automated_movement = 1
hostile = 1
if(!target_mob || SA_attackable(target_mob))
stance = SYNDICATE_STANCE_IDLE
if(target_mob in view(10, src))
@@ -113,6 +115,7 @@
if(SYNDICATE_STANCE_ATTACKING)
stop_automated_movement = 1
hostile = 1
if(!target_mob || SA_attackable(target_mob))
stance = SYNDICATE_STANCE_IDLE
target_mob = null