Merge pull request #4480 from Fox-McCloud/simple-animal-loot-refactor

Simple Animal Loot Refactor
This commit is contained in:
TheDZD
2016-05-22 18:31:43 -04:00
17 changed files with 58 additions and 87 deletions
@@ -20,6 +20,7 @@
flying = 1
universal_speak = 1
var/list/construct_spells = list()
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
/mob/living/simple_animal/construct/New()
..()
@@ -31,7 +32,6 @@
/mob/living/simple_animal/construct/death()
..()
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc)
for(var/mob/M in viewers(src, null))
if((M.client && !( M.blinded )))
M.show_message("\red [src] collapses in a shattered heap. ")
@@ -603,6 +603,7 @@
var/emagged = 0
atmos_requirements = list("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
loot = list(/obj/effect/decal/cleanable/blood/gibs/robot)
/mob/living/simple_animal/pet/corgi/Ian/borgi/emag_act(user as mob)
if(!emagged)
@@ -651,7 +652,6 @@
/mob/living/simple_animal/pet/corgi/Ian/borgi/death()
..()
visible_message("<b>[src]</b> blows apart!")
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
@@ -23,6 +23,7 @@
minbodytemp = 0
speak_emote = list("states")
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
loot = list(/obj/effect/decal/cleanable/blood/gibs/robot)
/mob/living/simple_animal/hostile/hivebot/range
name = "Hivebot"
@@ -47,7 +48,6 @@
/mob/living/simple_animal/hostile/hivebot/death()
..()
visible_message("<b>[src]</b> blows apart!")
new /obj/effect/decal/cleanable/blood/gibs/robot(src.loc)
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
@@ -73,6 +73,8 @@
aggro_vision_range = 9
idle_vision_range = 2
turns_per_move = 5
loot = list(/obj/item/weapon/ore/diamond{layer = 4.1},
/obj/item/weapon/ore/diamond{layer = 4.1})
/obj/item/projectile/temp/basilisk
name = "freezing blast"
@@ -100,14 +102,6 @@
if(3.0)
adjustBruteLoss(110)
/mob/living/simple_animal/hostile/asteroid/basilisk/death()
if(stat != DEAD)
var/counter
for(counter=0, counter<2, counter++)
var/obj/item/weapon/ore/diamond/D = new /obj/item/weapon/ore/diamond(src.loc)
D.layer = 4.1
..()
/mob/living/simple_animal/hostile/asteroid/goldgrub
name = "goldgrub"
desc = "A worm that grows fat from eating everything in its sight. Seems to enjoy precious metals and other shiny things, hence the name."
@@ -239,6 +233,7 @@
retreat_distance = 3
minimum_distance = 3
pass_flags = PASSTABLE
loot = list(/obj/item/organ/internal/hivelord_core)
/mob/living/simple_animal/hostile/asteroid/hivelord/OpenFire(var/the_target)
var/mob/living/simple_animal/hostile/asteroid/hivelordbrood/A = new /mob/living/simple_animal/hostile/asteroid/hivelordbrood(src.loc)
@@ -250,11 +245,6 @@
/mob/living/simple_animal/hostile/asteroid/hivelord/AttackingTarget()
OpenFire()
/mob/living/simple_animal/hostile/asteroid/hivelord/death()
if(stat != DEAD)
new /obj/item/organ/internal/hivelord_core(src.loc)
..()
/obj/item/organ/internal/hivelord_core
name = "hivelord remains"
desc = "All that remains of a hivelord, it seems to be what allows it to break pieces of itself off without being hurt... its healing properties will soon become inert if not used quickly. Try not to think about what you're eating."
@@ -370,6 +360,7 @@
idle_vision_range = 5
anchored = 1 //Stays anchored until death as to be unpullable
var/pre_attack = 0
loot = list(/obj/item/asteroid/goliath_hide{layer = 4.1})
/mob/living/simple_animal/hostile/asteroid/goliath/process_ai()
..()
@@ -386,13 +377,6 @@
anchored = 1
..()
/mob/living/simple_animal/hostile/asteroid/goliath/death()
anchored = 0
if(stat != DEAD)
var/obj/item/asteroid/goliath_hide/G = new /obj/item/asteroid/goliath_hide(src.loc)
G.layer = 4.1
..()
/mob/living/simple_animal/hostile/asteroid/goliath/OpenFire()
var/tturf = get_turf(target)
if(get_dist(src, target) <= 7)//Screen range check, so you can't get tentacle'd offscreen
@@ -22,9 +22,8 @@
atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
unsuitable_atmos_damage = 15
speak_emote = list("yarrs")
var/corpse = /obj/effect/landmark/mobcorpse/pirate
var/weapon1 = /obj/item/weapon/melee/energy/sword/pirate
loot = list(/obj/effect/landmark/mobcorpse/pirate,
/obj/item/weapon/melee/energy/sword/pirate)
faction = list("pirate")
/mob/living/simple_animal/hostile/pirate/ranged
@@ -38,16 +37,12 @@
retreat_distance = 5
minimum_distance = 5
projectiletype = /obj/item/projectile/beam
corpse = /obj/effect/landmark/mobcorpse/pirate/ranged
weapon1 = /obj/item/weapon/gun/energy/laser
loot = list(/obj/effect/landmark/mobcorpse/pirate/ranged,
/obj/item/weapon/gun/energy/laser)
/mob/living/simple_animal/hostile/pirate/death()
..()
if(corpse)
new corpse (src.loc)
if(weapon1)
new weapon1 (src.loc)
ghostize()
qdel(src)
return
@@ -150,8 +150,8 @@
walk(src,0)
/mob/living/simple_animal/hostile/retaliate/malf_drone/death()
src.visible_message("\blue \icon[src] [src] suddenly breaks apart.")
..()
visible_message("\blue \icon[src] [src] suddenly breaks apart.")
qdel(src)
/mob/living/simple_animal/hostile/retaliate/malf_drone/Destroy() //Seriously, what the actual hell.
@@ -45,6 +45,7 @@
minbodytemp = 0
faction = list("undead") // did I mention ghost
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
/mob/living/simple_animal/hostile/retaliate/ghost/Process_Spacemove(var/check_drift = 0)
return 1
@@ -61,7 +62,7 @@
invisibility = pick(0,60,60,invisibility)
..()
/mob/living/simple_animal/hostile/retaliate/ghost/death()
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm(loc)
..()
qdel(src)
return
@@ -90,9 +91,10 @@
minbodytemp = 0
faction = list("undead")
loot = list(/obj/effect/decal/remains/human)
/mob/living/simple_animal/hostile/retaliate/skeleton/death()
new /obj/effect/decal/remains/human(loc)
..()
qdel(src)
return
@@ -121,8 +123,9 @@
minbodytemp = 0
faction = list("undead")
loot = list(/obj/effect/decal/cleanable/blood/gibs)
/mob/living/simple_animal/hostile/retaliate/zombie/death()
new /obj/effect/decal/cleanable/blood/gibs(loc)
..()
qdel(src)
return
@@ -19,35 +19,30 @@
attacktext = "punches"
attack_sound = 'sound/weapons/punch1.ogg'
a_intent = I_HARM
var/corpse = /obj/effect/landmark/mobcorpse/russian
var/weapon1 = /obj/item/weapon/kitchen/knife
unsuitable_atmos_damage = 15
faction = list("russian")
status_flags = CANPUSH
loot = list(/obj/effect/landmark/mobcorpse/russian,
/obj/item/weapon/kitchen/knife)
/mob/living/simple_animal/hostile/russian/ranged
icon_state = "russianranged"
icon_living = "russianranged"
corpse = /obj/effect/landmark/mobcorpse/russian/ranged
weapon1 = /obj/item/weapon/gun/projectile/revolver/mateba
ranged = 1
retreat_distance = 5
minimum_distance = 5
projectiletype = /obj/item/projectile/bullet
projectilesound = 'sound/weapons/Gunshot.ogg'
casingtype = /obj/item/ammo_casing/a357
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged, /obj/item/weapon/gun/projectile/revolver/mateba)
/mob/living/simple_animal/hostile/russian/ranged/New()
if(prob(50) && ispath(weapon1,/obj/item/weapon/gun/projectile/revolver/mateba)) //to preserve varedits
weapon1 = /obj/item/weapon/gun/projectile/shotgun/boltaction
casingtype = /obj/item/ammo_casing/a762
/mob/living/simple_animal/hostile/russian/ranged/mosin
loot = list(/obj/effect/landmark/mobcorpse/russian/ranged,
/obj/item/weapon/gun/projectile/shotgun/boltaction)
casingtype = /obj/item/ammo_casing/a762
/mob/living/simple_animal/hostile/russian/death()
..()
if(corpse)
new corpse (src.loc)
if(weapon1)
new weapon1 (src.loc)
qdel(src)
return
@@ -19,22 +19,14 @@
attacktext = "punches"
attack_sound = 'sound/weapons/punch1.ogg'
a_intent = I_HARM
var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier
var/weapon1
var/weapon2
unsuitable_atmos_damage = 15
faction = list("syndicate")
check_friendly_fire = 1
status_flags = CANPUSH
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier)
/mob/living/simple_animal/hostile/syndicate/death()
..()
if(corpse)
new corpse (src.loc)
if(weapon1)
new weapon1 (src.loc)
if(weapon2)
new weapon2 (src.loc)
qdel(src)
return
@@ -45,11 +37,10 @@
melee_damage_upper = 25
icon_state = "syndicatemelee"
icon_living = "syndicatemelee"
weapon1 = /obj/item/weapon/melee/energy/sword/saber/red
weapon2 = /obj/item/weapon/shield/energy
attacktext = "slashes"
attack_sound = 'sound/weapons/bladeslice.ogg'
status_flags = 0
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/weapon/melee/energy/sword/saber/red, /obj/item/weapon/shield/energy)
/mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(O.force)
@@ -83,8 +74,8 @@
icon_state = "syndicatemeleespace"
icon_living = "syndicatemeleespace"
name = "Syndicate Commando"
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
speed = 1
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/weapon/melee/energy/sword/saber/red, /obj/item/weapon/shield/energy)
/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(var/movement_dir = 0)
return
@@ -99,8 +90,7 @@
casingtype = /obj/item/ammo_casing/c45
projectilesound = 'sound/weapons/Gunshot_smg.ogg'
projectiletype = /obj/item/projectile/bullet/midbullet2
weapon1 = /obj/item/weapon/gun/projectile/automatic/c20r
loot = list(/obj/effect/landmark/mobcorpse/syndicatesoldier, /obj/item/weapon/gun/projectile/automatic/c20r)
/mob/living/simple_animal/hostile/syndicate/ranged/space
icon_state = "syndicaterangedpsace"
@@ -108,8 +98,9 @@
name = "Syndicate Commando"
atmos_requirements = list("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
corpse = /obj/effect/landmark/mobcorpse/syndicatecommando
speed = 1
loot = list(/obj/effect/landmark/mobcorpse/syndicatecommando, /obj/item/weapon/gun/projectile/automatic/c20r)
/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(var/movement_dir = 0)
return
@@ -28,6 +28,7 @@
minbodytemp = 0
faction = list("hostile", "winter")
loot = list(/obj/item/stack/sheet/wood)
gold_core_spawnable = CHEM_MOB_SPAWN_HOSTILE
/mob/living/simple_animal/hostile/tree/FindTarget()
@@ -46,5 +47,4 @@
/mob/living/simple_animal/hostile/tree/death()
..()
visible_message("\red <b>[src]</b> is hacked into pieces!")
new /obj/item/stack/sheet/wood(loc)
qdel(src)
@@ -20,15 +20,12 @@
melee_damage_lower = 3
melee_damage_upper = 7
var/weapon1
/mob/living/simple_animal/hostile/winter/snowman
name = "snowman"
desc = "A very angry snowman. Doesn't look like it wants to play around..."
icon_state = "snowman"
icon_living = "snowman"
icon_dead = "snowman-dead"
weapon1 = /obj/item/weapon/melee/candy_sword
bodytemperature = 73.0 //it's made of snow and hatred, so it's pretty cold.
maxbodytemp = 280.15 //at roughly 7 C, these will start melting (dying) from the warmth. Mind over matter or something.
@@ -37,10 +34,10 @@
/mob/living/simple_animal/hostile/winter/snowman/death()
if(weapon1 && prob(50)) //50% chance to drop weapon on death, if it has one to drop
new weapon1(get_turf(src))
if(prob(50)) //50% chance to drop weapon on death, if it has one to drop
loot = list(/obj/item/weapon/melee/candy_sword)
if(prob(20)) //chance to become a stationary snowman structure instead of a corpse
new /obj/structure/snowman(get_turf(src))
loot.Add(/obj/structure/snowman)
visible_message("<span class='notice'>The [src.name] shimmers as its animating magic fades away!</span>")
..() //this is just to make sure it gets properly killed before we qdel it
qdel(src)
@@ -52,7 +49,6 @@
retreat_distance = 5
minimum_distance = 5
projectiletype = /obj/item/projectile/snowball
weapon1 = null
/mob/living/simple_animal/hostile/winter/reindeer
name = "reindeer"
@@ -24,11 +24,11 @@
status_flags = 0
faction = list("cult")
status_flags = CANPUSH
loot = list(/obj/item/weapon/reagent_containers/food/snacks/ectoplasm)
death()
..()
new /obj/item/weapon/reagent_containers/food/snacks/ectoplasm (src.loc)
for(var/mob/M in viewers(src, null))
if((M.client && !( M.blinded )))
M.show_message("\red [src] lets out a contented sigh as their form unwinds. ")
@@ -71,6 +71,7 @@
var/master_commander = null //holding var for determining who own/controls a sentient simple animal (for sentience potions).
var/sentience_type = SENTIENCE_ORGANIC // Sentience type, for slime potions
var/list/loot = list() //list of things spawned at mob's loc when it dies
/mob/living/simple_animal/New()
@@ -467,6 +468,9 @@
stat(null, "Health: [round((health / maxHealth) * 100)]%")
/mob/living/simple_animal/death(gibbed)
if(loot.len)
for(var/i in loot)
new i(loc)
health = 0
icon_state = icon_dead
stat = DEAD
+7 -4
View File
@@ -646,11 +646,14 @@ datum/reagent/strange_reagent
metabolization_rate = 0.2
datum/reagent/strange_reagent/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume)
if(istype(M, /mob/living/simple_animal))
if(isanimal(M))
if(method == TOUCH)
if(M.stat == DEAD)
M.revive()
M.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
var/mob/living/simple_animal/SM = M
if(SM.stat == DEAD)
SM.revive()
SM.loot.Cut() //no abusing strange reagent for unlimited farming of resources
SM.visible_message("<span class='warning'>[M] seems to rise from the dead!</span>")
if(istype(M, /mob/living/carbon))
if(method == INGEST)
if(M.stat == DEAD)