- Tweaks to spiders to be less robust.

- Made goats/cows not give infinite milk but instead slowly generate milk in their udder for collecting.
- Lowered speak chance for chickens and added a limit for how many chickens can be bred.
- Lowered the chances of an egg to be a chicken hatching egg.
- If you put an egg in your pocket it won't be a chicken hatching egg anymore.
- Chickens won't spawn inside you anymore.
- Added some abstract classes to the list of things that shouldn't spawn with slime cores.
- Increased the time between events.
- Added a spawn spiders button for admins.

git-svn-id: http://tgstation13.googlecode.com/svn/trunk@5535 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
giacomand@gmail.com
2013-01-12 23:07:51 +00:00
parent b7f29ca03e
commit 458fddbea5
6 changed files with 91 additions and 44 deletions

View File

@@ -421,6 +421,7 @@ var/global/floorIsLava = 0
<A href='?src=\ref[src];secretsfun=goblob'>Spawn blob</A><BR> <A href='?src=\ref[src];secretsfun=goblob'>Spawn blob</A><BR>
<A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR> <A href='?src=\ref[src];secretsfun=aliens'>Trigger an Alien infestation</A><BR>
<A href='?src=\ref[src];secretsfun=alien_silent'>Spawn an Alien silently</A><BR> <A href='?src=\ref[src];secretsfun=alien_silent'>Spawn an Alien silently</A><BR>
<A href='?src=\ref[src];secretsfun=spiders'>Trigger a Spider infestation</A><BR>
<A href='?src=\ref[src];secretsfun=spaceninja'>Send in a space ninja</A><BR> <A href='?src=\ref[src];secretsfun=spaceninja'>Send in a space ninja</A><BR>
<A href='?src=\ref[src];secretsfun=striketeam'>Send in a strike team</A><BR> <A href='?src=\ref[src];secretsfun=striketeam'>Send in a strike team</A><BR>
<A href='?src=\ref[src];secretsfun=carp'>Trigger an Carp migration</A><BR> <A href='?src=\ref[src];secretsfun=carp'>Trigger an Carp migration</A><BR>

View File

@@ -1959,6 +1959,11 @@
feedback_add_details("admin_secrets_fun_used","ALS") feedback_add_details("admin_secrets_fun_used","ALS")
if(aliens_allowed) if(aliens_allowed)
create_xeno() create_xeno()
if("spiders")
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","SL")
new /datum/event/spider_infestation
message_admins("[key_name_admin(usr)] has spawned spiders", 1)
if("comms_blackout") if("comms_blackout")
feedback_inc("admin_secrets_fun_used",1) feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","CB") feedback_add_details("admin_secrets_fun_used","CB")

View File

@@ -1,8 +1,8 @@
var/list/allEvents = typesof(/datum/event) - /datum/event var/list/allEvents = typesof(/datum/event) - /datum/event
var/list/potentialRandomEvents = typesof(/datum/event) - /datum/event var/list/potentialRandomEvents = typesof(/datum/event) - /datum/event
var/eventTimeLower = 9000 //15 minutes var/eventTimeLower = 15000 //15 minutes
var/eventTimeUpper = 15000 //25 minutes var/eventTimeUpper = 30000 //30 minutes
var/scheduledEvent = null var/scheduledEvent = null

View File

@@ -22,26 +22,37 @@
health = 40 health = 40
melee_damage_lower = 1 melee_damage_lower = 1
melee_damage_upper = 5 melee_damage_upper = 5
var/datum/reagents/udder = null
/mob/living/simple_animal/hostile/retaliate/goat/New()
udder = new(50)
udder.my_atom = src
..()
/mob/living/simple_animal/hostile/retaliate/goat/Life() /mob/living/simple_animal/hostile/retaliate/goat/Life()
..() . = ..()
//chance to go crazy and start wacking stuff if(.)//chance to go crazy and start wacking stuff
if(prob(1)) if(prob(1))
src.visible_message("\red [src] gets an evil-looking gleam in their eye.") src.visible_message("\red [src] gets an evil-looking gleam in their eye.")
faction = "hostile" faction = "hostile"
if(faction == "hostile" && prob(10)) if(faction == "hostile" && prob(10))
faction = "neutral" faction = "neutral"
enemies = list() enemies = list()
stance = HOSTILE_STANCE_IDLE stance = HOSTILE_STANCE_IDLE
target_mob = null target_mob = null
if(stat == CONSCIOUS)
if(udder && prob(5))
udder.add_reagent("milk", rand(5, 10))
/mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob) /mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/reagent_containers/glass)) if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
user.visible_message("[user] milks [src] into the [O].") user.visible_message("<span class='notice'>[user] milks [src] using the [O].</span>")
var/obj/item/weapon/reagent_containers/glass/G = O var/obj/item/weapon/reagent_containers/glass/G = O
G.reagents.add_reagent("milk",rand(7,12)) var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume) if(G.reagents.total_volume >= G.volume)
user << "\red The [O] is full." user << "\red The [O] is full."
if(!transfered)
user << "\red The udder is dry. Wait a bit longer..."
else else
..() ..()
//cow //cow
@@ -66,24 +77,38 @@
response_harm = "kicks the" response_harm = "kicks the"
attacktext = "kicks" attacktext = "kicks"
health = 50 health = 50
var/datum/reagents/udder = null
/mob/living/simple_animal/cow/New()
udder = new(50)
udder.my_atom = src
..()
/mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob) /mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/reagent_containers/glass)) if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
user.visible_message("[user] milks [src] into the [O].") user.visible_message("<span class='notice'>[user] milks [src] using the [O].</span>")
var/obj/item/weapon/reagent_containers/glass/G = O var/obj/item/weapon/reagent_containers/glass/G = O
G.reagents.add_reagent("milk",rand(5,10)) var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume) if(G.reagents.total_volume >= G.volume)
user << "\red The [O] is full." user << "\red The [O] is full."
if(!transfered)
user << "\red The udder is dry. Wait a bit longer..."
else else
..() ..()
/mob/living/simple_animal/cow/Life()
. = ..()
if(stat == CONSCIOUS)
if(udder && prob(5))
udder.add_reagent("milk", rand(5, 10))
/mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M as mob) /mob/living/simple_animal/cow/attack_hand(mob/living/carbon/M as mob)
if(!stat && M.a_intent == "disarm" && icon_state != icon_dead) if(!stat && M.a_intent == "disarm" && icon_state != icon_dead)
M.visible_message("<span class='warning'>[M] tips over [src].</span>","<span class='notice'>You tip over [src].</span>") M.visible_message("<span class='warning'>[M] tips over [src].</span>","<span class='notice'>You tip over [src].</span>")
Weaken(30) Weaken(30)
icon_state = icon_dead icon_state = icon_dead
spawn(rand(20,50)) spawn(rand(20,50))
if(!stat) if(!stat && M)
icon_state = icon_living icon_state = icon_living
var/list/responses = list( "[src] looks at you imploringly.", var/list/responses = list( "[src] looks at you imploringly.",
"[src] looks at you pleadingly", "[src] looks at you pleadingly",
@@ -104,7 +129,7 @@
speak_emote = list("cheeps") speak_emote = list("cheeps")
emote_hear = list("cheeps") emote_hear = list("cheeps")
emote_see = list("pecks at the ground","flaps it's tiny wings") emote_see = list("pecks at the ground","flaps it's tiny wings")
speak_chance = 10 speak_chance = 5
turns_per_move = 1 turns_per_move = 1
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 1 meat_amount = 1
@@ -116,19 +141,24 @@
var/amount_grown = 0 var/amount_grown = 0
pass_flags = PASSTABLE | PASSGRILLE pass_flags = PASSTABLE | PASSGRILLE
New() /mob/living/simple_animal/chick/New()
..() ..()
pixel_x = rand(-6, 6) pixel_x = rand(-6, 6)
pixel_y = rand(0, 10) pixel_y = rand(0, 10)
/mob/living/simple_animal/chick/Life() /mob/living/simple_animal/chick/Life()
..() . =..()
if(!.)
return
if(!stat) if(!stat)
amount_grown += rand(1,2) amount_grown += rand(1,2)
if(amount_grown >= 100) if(amount_grown >= 100)
new /mob/living/simple_animal/chicken(src.loc) new /mob/living/simple_animal/chicken(src.loc)
del(src) del(src)
var/const/MAX_CHICKENS = 50
var/global/chicken_count = 0
/mob/living/simple_animal/chicken /mob/living/simple_animal/chicken
name = "chicken" name = "chicken"
desc = "Hopefully the eggs are good this season." desc = "Hopefully the eggs are good this season."
@@ -139,7 +169,7 @@
speak_emote = list("clucks","croons") speak_emote = list("clucks","croons")
emote_hear = list("clucks") emote_hear = list("clucks")
emote_see = list("pecks at the ground","flaps it's wings viciously") emote_see = list("pecks at the ground","flaps it's wings viciously")
speak_chance = 10 speak_chance = 5
turns_per_move = 1 turns_per_move = 1
meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat meat_type = /obj/item/weapon/reagent_containers/food/snacks/meat
meat_amount = 2 meat_amount = 2
@@ -150,26 +180,36 @@
health = 10 health = 10
pass_flags = PASSTABLE pass_flags = PASSTABLE
New() /mob/living/simple_animal/chicken/New()
..() ..()
pixel_x = rand(-6, 6) pixel_x = rand(-6, 6)
pixel_y = rand(0, 10) pixel_y = rand(0, 10)
chicken_count += 1
/mob/living/simple_animal/chicken/Die()
..()
chicken_count -= 1
/mob/living/simple_animal/chicken/Life() /mob/living/simple_animal/chicken/Life()
..() . =..()
if(!.)
return
if(!stat && prob(1)) if(!stat && prob(1))
visible_message("[src] [pick("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")]") visible_message("[src] [pick("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")]")
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = new(src.loc) var/obj/item/weapon/reagent_containers/food/snacks/egg/E = new(get_turf(src))
E.pixel_x = rand(-6,6) E.pixel_x = rand(-6,6)
E.pixel_y = rand(-6,6) E.pixel_y = rand(-6,6)
processing_objects.Add(E) if(chicken_count < MAX_CHICKENS && prob(10))
processing_objects.Add(E)
obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0 /obj/item/weapon/reagent_containers/food/snacks/egg/var/amount_grown = 0
/obj/item/weapon/reagent_containers/food/snacks/egg/process() /obj/item/weapon/reagent_containers/food/snacks/egg/process()
amount_grown += rand(1,2) if(isturf(loc))
if(amount_grown >= 100) amount_grown += rand(1,2)
if(prob(50)) if(amount_grown >= 100)
visible_message("[src] hatches with a quiet cracking sound.") visible_message("[src] hatches with a quiet cracking sound.")
new /mob/living/simple_animal/chick(src.loc) new /mob/living/simple_animal/chick(get_turf(src))
processing_objects.Remove(src)
del(src)
else
processing_objects.Remove(src) processing_objects.Remove(src)
del(src)

View File

@@ -26,7 +26,7 @@
melee_damage_lower = 15 melee_damage_lower = 15
melee_damage_upper = 20 melee_damage_upper = 20
var/poison_per_bite = 5 var/poison_per_bite = 5
var/poison_type = "mindbreaker" var/poison_type = "toxin"
faction = "spiders" faction = "spiders"
var/busy = 0 var/busy = 0
pass_flags = PASSTABLE pass_flags = PASSTABLE
@@ -43,7 +43,7 @@
melee_damage_upper = 10 melee_damage_upper = 10
poison_per_bite = 10 poison_per_bite = 10
var/atom/cocoon_target var/atom/cocoon_target
poison_type = "zombiepowder" poison_type = "stoxin"
var/fed = 0 var/fed = 0
//hunters have the most poison and move the fastest, so they can find prey //hunters have the most poison and move the fastest, so they can find prey
@@ -56,7 +56,7 @@
health = 120 health = 120
melee_damage_lower = 10 melee_damage_lower = 10
melee_damage_upper = 20 melee_damage_upper = 20
poison_per_bite = 20 poison_per_bite = 5
/mob/living/simple_animal/hostile/giant_spider/AttackingTarget() /mob/living/simple_animal/hostile/giant_spider/AttackingTarget()
..() ..()
@@ -72,8 +72,8 @@
..() ..()
if(!stat) if(!stat)
if(stance == HOSTILE_STANCE_IDLE) if(stance == HOSTILE_STANCE_IDLE)
//10% chance to skitter madly away //1% chance to skitter madly away
if(!busy && prob(10)) if(!busy && prob(1))
/*var/list/move_targets = list() /*var/list/move_targets = list()
for(var/turf/T in orange(20, src)) for(var/turf/T in orange(20, src))
move_targets.Add(T)*/ move_targets.Add(T)*/

View File

@@ -979,6 +979,7 @@ datum
/mob/living/simple_animal/hostile/syndicate/ranged, /mob/living/simple_animal/hostile/syndicate/ranged,
/mob/living/simple_animal/hostile/syndicate/ranged/space, /mob/living/simple_animal/hostile/syndicate/ranged/space,
/mob/living/simple_animal/hostile/alien/queen/large, /mob/living/simple_animal/hostile/alien/queen/large,
/mob/living/simple_animal/hostile/retaliate,
/mob/living/simple_animal/hostile/retaliate/clown /mob/living/simple_animal/hostile/retaliate/clown
)//exclusion list for things you don't want the reaction to create. )//exclusion list for things you don't want the reaction to create.
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs